【问题标题】:Forwarding Messages to Remote Endpoint in Nservicebus在 Nservicebus 中将消息转发到远程端点
【发布时间】:2010-11-20 13:10:42
【问题描述】:

在我的消息发布者配置中,我有

 <MsmqTransportConfig
    InputQueue="EnformMessages"
    ErrorQueue="error"
    NumberOfWorkerThreads="1"
    MaxRetries="5"
  />
    <UnicastBusConfig ForwardReceivedMessagesTo="testqueue@cgy1-web01">
       <MessageEndpointMappings>
       <!-- publishers don't need to set this for their own message types -->
       </MessageEndpointMappings>
     </UnicastBusConfig>

我希望将发布到 EnformMessages 的消息复制到远程机器上的队列中。尽管消息肯定是在本地接收的,但似乎没有消息发送到远程机器。远程监听器的配置文件看起来像

<MsmqTransportConfig
  InputQueue="worker"
  ErrorQueue="error"
  NumberOfWorkerThreads="1"
  MaxRetries="5"
  />

  <UnicastBusConfig>
    <MessageEndpointMappings>

      <add Messages="EnformMessages" Endpoint="testqueue" />
    </MessageEndpointMappings>
  </UnicastBusConfig>

我还尝试以http://www.candland.net/blog/2009/06/08/NServiceBusDistributorOverview.aspx 中描述的方式使用分发器。所以我的发布者配置看起来像

<MsmqTransportConfig
    InputQueue="client"
    ErrorQueue="error"
    NumberOfWorkerThreads="1"
    MaxRetries="5"
  />

  <UnicastBusConfig
    DistributorControlAddress=""
    DistributorDataAddress=""
    ForwardReceivedMessagesTo="">

    <MessageEndpointMappings>
      <!-- publishers don't need to set this for their own message types -->
      <add Messages="EnformMessages" Endpoint="distributordatabus@cgy1-web01" />
      </MessageEndpointMappings>
  </UnicastBusConfig>

订阅者配置喜欢

<MsmqTransportConfig
  InputQueue="EnformMessages"
  ErrorQueue="error"
  NumberOfWorkerThreads="1"
  MaxRetries="5"
  />

  <UnicastBusConfig
    DistributorControlAddress="distributorcontrolbus@cgy1-web01"

      DistributorDataAddress="distributordatabus@cgy1-web01">
    <MessageEndpointMappings>

      <!--<add Messages="EnformMessages" Endpoint="EnformMessages" />-->
    </MessageEndpointMappings>
  </UnicastBusConfig>

和经销商一样

<appSettings>
    <add key="NumberOfWorkerThreads" value="1"/>

    <add key="DataInputQueue" value="distributorDataBus"/>
    <add key="ControlInputQueue" value="distributorControlBus"/>
    <add key="ErrorQueue" value="error"/>
    <add key="StorageQueue" value="distributorStorage"/>

    <add key="NameSpace" value="http://www.UdiDahan.com"/> 
    <!-- relevant for a Serialization of "interfaces" or "xml" -->

    <add key="Serialization" value="xml"/>
    <!-- can be either "xml", or "binary" -->
  </appSettings>


  <MsmqTransportConfig
 InputQueue="distributorControlBus"
 ErrorQueue="error"
 NumberOfWorkerThreads="1"
 MaxRetries="5"
  />

  <UnicastBusConfig >
    <MessageEndpointMappings >

      <add Messages="EnformMessages" Endpoint="EnformMessages" />
    </MessageEndpointMappings>
  </UnicastBusConfig>

似乎没有消息到达。事实上,分销商根本没有打印任何内容。我在配置文件中添加了一个日志记录部分,希望它会产生一些输出,但什么也没得到。

Nservicebus 2.0.0.768

【问题讨论】:

  • 第一件事 - 升级到 RTM :-)
  • 啊,这是个好主意。我已经完成并回到了本地 pub/sub 工作的地步

标签: nservicebus


【解决方案1】:

在发布/订阅方案中,将消息转发到审核队列的是订阅者,而不是发布者。此外,您已告诉订阅者其发布者是“testqueue”,但您将发布者的输入队列指定为“EnformMessages”。这两个队列需要匹配。

【讨论】:

  • 那么 ForwardRecievedMessagesTo 实际上只是用于审核,不应该用于以我尝试的方式分发消息。 testqueue 仅用于我粘贴问题时。是现实中的 EnformMessages
  • 由于各种原因,我似乎不应该使用 MSMQ 4 的远程队列功能。我想我会再试试经销商。
  • 好的,有些进展。将分发器与侦听器一起部署在侦听器机器上似乎表明侦听器已连接到分发器。现在如何将消息发送给分发者?
  • 要向分销商发送消息,您必须有一个客户向它发送一些工作。这可以是另一个 NSB 端点,或者您可以在某个时间间隔向自己发送消息。
猜你喜欢
  • 2015-04-13
  • 2012-06-03
  • 1970-01-01
  • 1970-01-01
  • 2017-06-26
  • 2013-03-02
  • 1970-01-01
  • 2014-06-11
  • 1970-01-01
相关资源
最近更新 更多