我在C#中创建一个Windows服务来处理来自队列的消息。我想让ops根据消息的属性灵活地在生产中对服务进行分区。例如,他们应该能够说一个实例处理来自客户A的Web订单,来自客户A的另一个批量订单,来自客户B的第三个Web订单或批处理订单等等。
我目前的解决方案是为每个客户\来源组合分配单独的队列。将订单放入队列的过程必须做出正确的决定。我的Windows服务可以配置为从一个或多个队列中提取消息。这很麻烦,但它确实有效。
答案 0 :(得分:5)
不,但您可以 PEEK 进入队列,并决定是否确实要使用该消息。
答案 1 :(得分:3)
使用 GetMessageEnumerator2(),如下所示:
MessageEnumerator en = q.GetMessageEnumerator2();
while (en.MoveNext())
{
if (en.Current.Label == label)
{
string body = ((XmlDocument)en.Current.Body).OuterXml;
en.RemoveCurrent();
return body;
}
}