我可以通过某些属性过滤从邮件队列(MSMQ)收到的邮件吗? (又称主题)
时间:2020-03-05 18:53:49 来源:igfitidea点击:
我正在C中创建Windows服务,该服务处理队列中的消息。我想让ops根据消息的属性灵活地在生产中对服务进行分区。例如,他们应该能够说一个实例处理来自客户A的Web订单,另一个处理来自客户A的批次订单,第三个Web或者来自客户B的批次订单,等等。
我当前的解决方案是为每个客户\源组合分配单独的队列。将订单放入队列的过程必须做出正确的决定。我的Windows服务可以配置为从一个或者多个队列中提取消息。杂乱无章,但是行得通。
解决方案
回答
否,但是我们可以将PEEK放入队列中并决定是否确实要使用该消息。
回答
像这样使用GetMessageEnumerator2():
MessageEnumerator en = q.GetMessageEnumerator2(); while (en.MoveNext()) { if (en.Current.Label == label) { string body = ((XmlDocument)en.Current.Body).OuterXml; en.RemoveCurrent(); return body; } }