如何使两个服务器监听MSMQ队列

时间:2010-01-29 18:03:51

标签: queue msmq

我正在尝试让一个队列被两个不同的应用程序监听,但到目前为止,我没有成功。

我已经尝试了BeginPeek和BeginReceive方法,但没有一个工作。如果我使用BeginReceive和ReceiveCompleted事件,则只有一个服务器接收该消息。如果我使用BeginPeek和PeekCompleted,系统会运行循环,或者,如果我设法从队列中删除消息,则只有一个服务器接收它。

有关如何实现这一目标的任何线索?

1 个答案:

答案 0 :(得分:0)

正常的队列方法对你的情况不起作用,因为它是一个队列,所以先进先出。你有几个选择。

第一个选项是让服务器发布到两个不同的队列,每个队列对应一个客户端应用程序。然后每个客户端将使用BeginReceive / ReceiveCompleted方法。这很简单,但如果要扩展到许多客户端应用程序,则可能会出现问题。当我有几个我需要发送消息的下游系统时,这就是我所做的。

MSDN blog表示您可以将PGM多播地址附加到队列中。然后,客户端订阅多播组并以这种方式接收消息。我对此没有任何经验,但看起来你失去了交易性,这可能是一个问题。