我有几个将消息推送到远程 MSMQ 的网站(因此可以将它们发布到订阅者列表)。因为网站不使用消息——它只是一个发送后忘记的设置——我的 web.config 中只有以下站点的配置:
<UnicastBusConfig>
<MessageEndpointMappings>
<add Messages="MyNamespace.Messages" Endpoint="PublishingInputQueue@remoteserver" />
</MessageEndpointMappings>
</UnicastBusConfig>
我正在尝试解决一个错误,其中间歇性消息似乎已成功发送Bus.Send(..)
(没有抛出异常),但消息永远不会到达目标队列。
我可以做任何其他配置来帮助诊断此问题吗?有没有办法为 UnicastBus 失败的消息设置错误队列?是否像在 MsmqTransportConfig 中建立一个错误队列一样简单(我目前在我的配置中没有?)
更新
多一点上下文...
- 正如评论中提到的,我看到一堆消息显然堆积在 Web 服务器的传出消息队列中。(我无法查看实际消息,但在计算机管理中单击“传出队列”时可以看到计数 > 0。)
- 创建目标队列(在远程服务器上)的发布者
.IsTransactional(true)
在 NServiceBus 启动代码中。 - 通过 UnicastBus 推送到该队列的客户端
.IsTransactional(false)
在其 NServiceBus 启动代码中。 - 这似乎不会对推送到此目标队列的其他客户端网站造成问题。然而:
- 似乎没有失败的网络服务器是 Windows Server 2008
- 失败的网络服务器是 Windows Server 2003
- 不知道这是否有所作为
- 运行应用程序池的域用户对目标队列具有完全权限。