NServiceBus单播调试

NServiceBus单播调试,nservicebus,Nservicebus,我有几个网站将消息推送到远程MSMQ(这样它们就可以发布到订阅者列表)。因为网站不使用消息--这只是一个发送和忘记设置--我的web.config中只有以下站点配置: <UnicastBusConfig> <MessageEndpointMappings> <add Messages="MyNamespace.Messages" Endpoint="PublishingInputQueue@remoteserver" /> </Messa

我有几个网站将消息推送到远程MSMQ(这样它们就可以发布到订阅者列表)。因为网站不使用消息--这只是一个发送和忘记设置--我的web.config中只有以下站点配置:

<UnicastBusConfig>
  <MessageEndpointMappings>
    <add Messages="MyNamespace.Messages" Endpoint="PublishingInputQueue@remoteserver" />
  </MessageEndpointMappings>
</UnicastBusConfig>

我试图找出一个错误,在这个错误中,间歇性消息似乎通过
总线成功发送。Send(..)
(没有引发异常),但消息从未到达目标队列

是否有其他配置可以帮助诊断此问题?有没有办法为使用UnicastBus失败的消息设置错误队列?它是否像在MsmqTransportConfig(我当前的配置中没有)中建立错误队列那样简单

更新

多一点背景

  • 正如在评论中提到的,我看到一堆消息显然堆积在web服务器的传出消息队列中。(我无法查看实际邮件,但在单击“计算机管理”中的“传出队列”时,可以看到计数>0。)
  • 创建目标队列(在remoteserver上)的发布服务器在NServiceBus启动代码中具有
    .isTransaction(true)
  • 通过UnicastBus推送到该队列的客户端在其NServiceBus启动代码中有
    .isTransaction(false)
  • 这似乎不会导致推送到该目标队列的其他客户端网站出现问题。然而:
    • 似乎没有出现故障的Web服务器是Windows Server 2008
    • 确实失败的Web服务器是Windows Server 2003
    • 不知道这是否有区别
  • 运行应用程序池的域用户对目标队列具有完全权限
为完整起见:


结果表明,服务器上用于MSMQ服务的Active Directory对象不同步。我相信这是在我们的DevOps团队创建了一个服务器实例,将其全部设置好,然后为集群中的其他服务器实例克隆它时发生的。此初始服务器工作正常(解释了间歇性成功),但克隆实例的MSMQ的AD对象不同步。删除对象以允许重新创建解决了此问题。

检查死信队列以查看是否有任何消息在那里结束。是的,我正在查看web服务器上传出队列中备份的消息。(这对我来说是全新的)谢谢你的建议,我会告诉你我发现了什么。