我有一个设置,其中有一系列服务器,我需要在它们之间发送消息:
A -> B
在 AI 上有一个应用程序将消息放在本地 MSMQ 队列上。该队列需要将消息转发到 B 上的 MSMQ 队列。
消息不必是事务性的。
我已在 Windows 消息队列功能下启用 HTTP 支持。我在 System32/msmq/mappings 文件夹下添加了一个映射文件,如下所示:
<redirections xmlns="msmq-queue-redirections.xml">
<redirection>
<from>http://A/msmsq/private$/logger</from>
<to>http://B/msmq/private$/logger</to>
</redirection>
</redirections>
我正在使用 powershell 将消息发送到 A 上的队列,如下所示:
Get-MsmqQueue -name logger | Send-MsmqQueue -body "test message" -label "test"
当消息被放置在 A 上的队列中时,它们不会被重定向到 B,而是留在 A 队列中。
我应该如何配置 A 和 B 以便消息从 A 上的 MSMQ 转发到 B 上的 MSMQ?
更新
在实际场景中,链中涉及更多服务器,并且每个服务器仅允许与链中的下一个服务器通信。在链中的最后一个服务器上,应用程序从该服务器上的队列中读取消息并将消息插入到数据库中。
答案1
您无法按照您尝试的方式完成此操作。当您将消息发送到本地队列 A 时,就完成了。该消息已成功传递。任务完成。
MSMQ 使用传出队列来提供您所需的功能。
使用 PowerShell 将消息直接发送到服务器 B。消息存储在 A 上的传出队列中,直到可以传递到 B。存储转发正在执行。