我创建了一个NServiceBus分发服务器和Worker,在不同的机器上运行。当我运行worker时,它成功地向Distributor发送一条消息(我可以看到它通过Storage队列处理),但由于某种原因,在Distributor上创建了一个名为
的输出队列。 应该调用队列时,' DIRECT = TCP:xx.xx.xx.xx \ PRIVATE $ \ order_queue $ ' DIRECT = OS:WORKERDNSNAME \私人$ \ myQueue中&#39 ;.
有谁知道为什么要创建order_queue $?
答案 0 :(得分:2)
直接来自pg2e.blogspot.co.uk的旧帖子的无耻副本:
来自专用网络的HTTP上的交易队列
通过http / s从a发送消息到事务队列时 没有公共IP地址的服务器,ACK消息可能很难 到达目的地的时间。这是由于与原因相同的原因 this发布(基本上NAT会导致与邮件目标地址不匹配)。
默认情况下,收据会发送到发送计算机名称 当然,除非双方都在同一个地方,否则将无法运作 网络。要解决此问题,您必须将收据映射到公共地址 发件人这是通过创建一个xml文件(任何名称)来完成的 C:\ WINDOWS \ system32 \ msmq \ mapping ,内容如下。
<StreamReceiptSetup xmlns="msmq-streamreceipt-mapping.xml"> <setup> <LogicalAddress>http://msmq.domain.com/*</LogicalAddress> <StreamReceiptURL>http://[ADDRESS_TO_SENDER]/msmq/Private$/order_queue$</StreamReceiptURL> </setup> <default>http://xxx.xx.xxx.xx/msmq/Private$/order_queue$</default> </StreamReceiptSetup>
说明:发送到msmq.domain.com上任何队列的所有邮件都将 将收据发送到给定的StreamReceiptURL。的的 order_queue $ queue用于处理事务控制消息。
我怀疑更高版本的MSMQ或NServiceBus会自动创建此队列而无需您自己创建XML文件。