【问题标题】:MSMQ: How do you send a msg from transactional dead letter queue to a private queue on remote machineMSMQ:如何将消息从事务死信队列发送到远程机器上的私有队列
【发布时间】:2014-07-29 23:51:27
【问题描述】:
Windows 服务器 2012
MSMQ 6 工作组模式
我们在尝试恢复发送到事务死信队列的 MSMQ 消息时遇到问题。我们已经尝试将它们移动到出站队列,消息似乎可以正常发送(即使事件日志也是如此),但它永远不会到达目标队列。
经过反复试验,我们找到了如何将它们发送到同一服务器上的另一个队列,而不是远程服务器上的目标队列。我们不想再丢失消息了。有人对我们如何传递这些信息有任何建议吗?
谢谢,
大卫
【问题讨论】:
标签:
msmq
msmq-transaction
【解决方案1】:
据我了解您的问题,这是您在 MSMQ 中已有的一些消息的一次性问题,而不是机器之间的一般连接问题?如果是这样,您应该可以使用一些 MSMQ 管理工具来解决它。免责声明:我是这样一种工具——QueueExplorer 的作者。我不知道其他工具可以做什么,但是使用 QueueExplorer,您可以将消息复制/粘贴或拖放到在单独的选项卡/窗口中打开的另一台机器上。为了做到这一点,QueueExplorer 必须执行 MSMQ 发送操作,因此消息必须在这两台机器之间通过 MSMQ。
因此,如果仍然存在阻止原始交付的问题,您仍然会被卡住。在这种情况下,您可以将所有消息保存到文件中,通过文件系统将其传输到另一台机器,然后将其加载到它们应该去的任何队列中。这显然只是一次性情况下的手动解决方法。顺便提一句。这可以在 QueueExplore 的试用模式下完成。
但是,如果连接有问题,并且消息总是在死信队列中结束,最好从计算机管理中检查它们。这是它比我们的工具更好的一个领域 - 您可以打开“类”列并查看无法传递消息的原因。例如,如果您看到“接收时间已过”,您就会知道问题出在哪里。