NServiceBus无法引发传输消息已接收事件

时间:2010-10-27 15:30:34

标签: msmq nservicebus

情境:

  • 我正在使用带有MSMQ Transport的NServiceBus。
  • 我将来自应用的消息放入了QUEUE-A。
  • 我有一个NServiceBus Gateway从QUEUE-A抓取消息并将它们发送到另一个网关
  • 我将目标网关接收消息并将它们放入相应的队列中。
  • Source Gateway抛出Null Reference Exception并总共发送5次消息(最多重试次数)。
  • 目标网关接收所有消息并显示它在日志中发送HTTP响应。

目标网关引发的错误是:

WARN NServiceBus.Unitcast.Transport.Msmq.MsmqTransport [(null)]<(null)> - 无法为ID = GUID的消息引发“收到传输消息”事件 System.NullReferenceException:未将对象引用设置为对象的实例。

此错误最初是在2个不同的服务器上设置的,但是当我在本地计算机上本地运行方案(在管理员权限下)(只是在不同的端口上侦听)时会发生此错误。我正在将消息的SetHttpToHeader()设置为正确的目标地址。

网关配置如下:

网关1:

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

    <add key="InputQueue" value="Gateway1Pickup"/>
    <add key="ErrorQueue" value="Gateway1Error"/>
    <add key="ForwardReceivedMessageTo" value="audit"/>

    <add key="OutputQueue" value="Gateway1Output"/>
    <add key="ListenUrl" value="http://address:6768/Gateway/"/>

    <add key="RequireMD5FromClient" value="true"/>
  </appSettings>

网关2:

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

    <add key="InputQueue" value="Gateway2Pickup"/>
    <add key="ErrorQueue" value="Gateway2Error"/>
    <add key="ForwardReceivedMessageTo" value="audit"/>

    <add key="OutputQueue" value="Gateway2Output"/>
    <add key="ListenUrl" value="http://address:6768/Gateway/"/>

    <add key="RequireMD5FromClient" value="true"/>
  </appSettings>

有谁知道我在哪里出错?

2 个答案:

答案 0 :(得分:3)

起初我得到了一个坚实的repro然后我意识到NSB不会为你创建审计队列。如果从配置中删除它们或创建审核队列,则应该全部设置。

答案 1 :(得分:0)

当我在服务目录中没有一些依赖程序集时,我发现上面的问题出现了。我发现错误附加到MSMQ队列中的消息。我使用了Queue Explorer,但我认为其他工具会显示相同的内容。

相关问题