NServiceBus单播调试
我有几个网站将消息推送到远程MSMQ(这样它们就可以发布到订阅者列表)。因为网站不使用消息--这只是一个发送和忘记设置--我的web.config中只有以下站点配置:NServiceBus单播调试,nservicebus,Nservicebus,我有几个网站将消息推送到远程MSMQ(这样它们就可以发布到订阅者列表)。因为网站不使用消息--这只是一个发送和忘记设置--我的web.config中只有以下站点配置: <UnicastBusConfig> <MessageEndpointMappings> <add Messages="MyNamespace.Messages" Endpoint="PublishingInputQueue@remoteserver" /> </Messa
<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服务器上传出队列中备份的消息。(这对我来说是全新的)谢谢你的建议,我会告诉你我发现了什么。