我在C#中实现了一个使用Microsoft Message Queue(System.Messaging
)进行相关进程间通信的系统。本质上,许多 Sender 服务生成要放入队列的消息,并且许多 Receiver 进程会监视队列并在它们到达时抓取这些消息。
我刚刚被告知有些消息需要优先于其他消息。
消息可能会出现波动,并且有可能在一次命中(例如一千次左右)中将大量消息放入队列中,因此在最终消息之前可能会有延迟得到处理。
我最初的想法是拥有第二个优先级消息队列,该队列也由不同线程中的每个接收器进程监视。此队列中的消息数量要少得多,因此延迟时间会减少。
然后我偶然发现了Message.Priority
财产。
所以:
我应该使用此优先级标志而不是实现另一个队列吗?它会成功有效地跳过这些消息吗?如果是这样,那么可能存在哪些条件和副作用?
或者我应该坚持原计划并为优先级消息实施另一个队列?
答案 0 :(得分:5)
我应该使用此优先级标志而不是实现另一个队列吗?的是
它会成功有效地跳过这些消息吗?的是
如果是的话,可能会有什么条件和副作用? 无,MSMQ旨在以这种方式工作。
答案 1 :(得分:3)
显然不需要邮件优先级 - http://www.udidahan.com/2008/01/30/podcast-message-priority-you-arent-gonna-need-it\ 。 Udi讨论了几种不同的架构以及使用多个端点而不是使用msmq消息优先级来设置基础架构的方法。他还提到打开消息优先级会增加服务器上的内存使用量。