6

我在 C# 中实现了一个系统,该系统使用 Microsoft 消息队列 ( System.Messaging) 在相​​关进程之间进行通信。本质上,许多Sender服务生成要放入队列的消息,并且许多Receiver进程监视队列并在它们到达时获取这些消息。

我刚刚被告知有些消息需要优先于其他消息。

消息可能会一波又一波地出现,并且可能会有大量消息一次性放入队列(比如一千左右),因此在处理最终消息之前可能会有延迟。

我最初的想法是有第二个优先级消息队列,它也被不同线程中的每个接收器进程监视。此队列中的消息会少得多,因此延迟会更少。

然后我偶然发现了该Message.Priority物业。

所以:

我应该使用这个优先级标志而不是实现另一个队列吗?它会成功且有效地将这些消息跳到其他消息之前吗?如果是这样,如果有的话,可能会出现什么情况和副作用?

还是我应该坚持原来的计划并为优先消息实施另一个队列?

4

2 回答 2

5

我应该使用这个优先级标志而不是实现另一个队列吗?的。

它会成功且有效地将这些消息跳到其他消息之前吗?的。

如果是这样,如果有的话,可能会出现什么情况和副作用?没有,MSMQ 被设计为以这种方式工作

于 2009-03-27T00:30:40.020 回答
3

显然不需要消息优先级 - http://www.udidahan.com/2008/01/30/podcast-message-priority-you-arent-gonna-need-it\。Udi 讨论了几种不同的可能架构以及使用多个端点而不是使用 msmq 消息优先级来设置基础架构的方法。他还提到,打开消息优先级会增加服务器上的内存使用量。

于 2011-06-06T13:30:46.813 回答