0

我有几个将消息推送到远程 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
    • 不知道这是否有所作为
  • 运行应用程序池的域用户对目标队列具有完全权限。
4

1 回答 1

0

为了完整起见:

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

于 2013-05-30T18:32:50.167 回答