Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何通过HTTP进行MSMQ路由?_Http_Routing_Msmq_Forwarding - Fatal编程技术网

如何通过HTTP进行MSMQ路由?

如何通过HTTP进行MSMQ路由?,http,routing,msmq,forwarding,Http,Routing,Msmq,Forwarding,Ì有一个设置,其中我有一个服务器链,我需要在以下服务器之间发送消息: A -> B -> C 在A上,我有一个应用程序将消息放在A上的本地MSMQ队列MSMQ-A上。此队列需要将消息转发到B上的MSMQ队列MSMQ-B,而B上的MSMQ队列应将消息转发到C MSMQ-C上的MSMQ队列。在C上,有一个应用程序侦听来自MSMQ-C的消息 这些消息不需要是事务性的 如何配置MSMQ-A和MSMQ-B以转发消息 更新 根据建议的答案,我做了以下工作: 我已经在Windows消息队列功能下

Ì有一个设置,其中我有一个服务器链,我需要在以下服务器之间发送消息:

A -> B -> C
在A上,我有一个应用程序将消息放在A上的本地MSMQ队列MSMQ-A上。此队列需要将消息转发到B上的MSMQ队列MSMQ-B,而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> 
信息仍然会被卡在machineA上


我正在使用powershell以如下方式将消息发送到队列:Get-MsmqQueue-name logger | send-MsmqQueue-body asdasd

您描述的设计不是MSMQ提供的

MSMQ将消息从发送者传递到接收者,就是这样。你不能有这样一个链:接收者自动成为下一个接收者的发送者。您需要在从队列接收消息的每台计算机上编写一个应用程序,并创建消息的新副本以发送给下一台计算机

MSMQ路由是一个不同的概念。将其与包裹运输进行比较,包裹通过全国不同的仓库运输,直到到达最终目的地。每个仓库除了传递包裹外,对包裹不做任何处理。他们不会打开包裹,使用里面的东西,然后重新包装发送到下一个仓库

您可能需要重定向MSMQ消息。例如,如果A是基于Internet的PC,B是面向Internet的服务器,C是内部LAN上的PC,您希望发送A->B->C。如果您有这种情况,则需要查看重定向


那么,我该如何设置一个系统,以便在B和C关闭时,消息不会丢失。在服务器上设置MSMQ服务器是否足够?我也不太理解这些文章。。我应该在哪里走路线。关于MSMQ的一个实例?我应该在哪台服务器上设置映射?与MSMQ消息相关的所有计算机都是MSMQ服务器,它们使用存储和转发来防止消息丢失。所以A+B+C都需要安装带有HTTP支持选项的MSMQ。我应该在哪里走路线?您正在重定向,而不是路由。这听起来可能很迂腐,但在MSMQ中它们是不同的概念。A通过HTTP将消息发送到B面向Internet一侧的队列。B有一个重定向文件,该文件将该队列映射到C上的实际目标队列。B上的队列实际上不需要存在。这只是一种隐藏C使用的内部队列名称的方法。重定向成功了吗?