C# · 12月 23, 2021

c# – Microsoft Message Queue – 优先级标志还是单独的队列?

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

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

消息可能会出现波动,并且有可能在一次命中(例如一千次左右)中将大量消息放入队列中,因此在最终消息处理之前可能会有延迟.

我最初的想法是拥有第二个优先级消息队列,每个接收者进程也会在另一个线程中监视该队列.此队列中的消息数量要少得多,因此延迟时间会减少.

然后我偶然发现了Message.Priority属性.

所以:

我应该使用此优先级标志而不是实现另一个队列吗?它会成功有效地跳过这些消息吗?如果是这样,那么可能存在哪些条件和副作用?

或者我应该坚持我的原始计划并实施另一个优先级消息队列?

解决方法 我应该使用此优先级标志而不是实现另一个队列吗?是.

它会成功有效地跳过这些消息吗?是.

如果是这样,那么可能存在哪些条件和副作用?没有,MSMQ旨在以这种方式工作.