我可以通过某些属性过滤从邮件队列(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;
    }
}