【问题标题】:How to make a MSMQ queue be listened by two server如何让一个 MSMQ 队列被两台服务器监听
【发布时间】:2011-01-10 23:09:36
【问题描述】:

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

我尝试过 BeginPeek 和 BeginReceive 方法,但都没有奏效。如果我将 BeginReceive 与 ReceiveCompleted 事件一起使用,则只有一台服务器接收到消息。如果我将 BeginPeek 与 PeekCompleted 一起使用,系统会进入循环,或者,如果我设法从队列中删除消息,则只有一台服务器会接收到它。

有什么线索可以做到这一点吗?

【问题讨论】:

    标签: queue msmq


    【解决方案1】:

    普通的队列方法不适用于您的情况,因为它是一个队列,所以先进先出。你有几个选择。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-20
      • 1970-01-01
      • 1970-01-01
      • 2013-03-11
      • 2012-06-03
      • 2016-02-08
      • 2011-06-19
      • 2015-02-07
      相关资源
      最近更新 更多