Ì有一个设置,我有一系列服务器,我需要在之间发送消息:
A -> B -> C
在AI上有一个应用程序,它将消息放在A上的本地MSMQ队列(MSMQ-A)上。此队列需要将消息转发到B上的MSMQ队列(MSMQ-B),而MSMQ队列又转发消息到C(MSMQ-C)上的MSMQ队列。在C上有一个应用程序,它监听来自MSMQ-C的消息。
消息不需要是事务性的。
如何配置MSMQ-A和MSMQ-B以转发消息?
更新
基于建议的答案,我已经这样做了:
我在Windows消息队列功能下启用了HTTP支持。 我在System32 / msmq / mappings文件夹下添加了一个映射文件,如下所示:
<redirections xmlns="msmq-queue-redirections.xml">
<redirection>
<from>http://machineA/msmsq/private$/logger</from>
<to>http://machineB/msmq/private$/logger</to>
</redirection>
</redirections>
仍然消息卡在机器A上。
我正在使用powershell将消息发送到A上的队列,如下所示:Get-MsmqQueue -name logger | Send-MsmqQueue -body“asdasd”
答案 0 :(得分:0)
您所描述的设计不是MSMQ提供的设计。
MSMQ从发送者向接收者发送消息,就是这样。您不能拥有一个链接器,接收器自动成为下一个接收器的发送者。您需要在从队列接收消息的每台计算机上编写一个应用程序,并创建一个新的副本以发送给下一个。
MSMQ路由是一个不同的概念。将其与包裹运输进行比较,其中包裹通过全国各地的不同仓库进行路由,直至到达最终目的地。除了传递之外,每个仓库都不对包裹做任何事情。他们不打开包裹,使用内容,然后重新包装发送到下一个仓库。
您可能希望重定向MSMQ消息。例如,如果A是基于Internet的PC,则B是面向Internet的服务器,C是内部LAN上的PC(并且您想要发送A-> B-> C)。如果您有这种情况,那么您需要查看重定向。