【问题标题】:NServiceBus distributor worker create a queue called PRIVATE$\order_queue$NServiceBus 分发器工作人员创建一个名为 PRIVATE$\order_queue$ 的队列
【发布时间】:2014-12-31 14:08:00
【问题描述】:
我创建了一个 NServiceBus Distributor 和 Worker,在不同的机器上运行。当我运行 worker 时,它成功地向 Distributor 发送了一条消息(我可以看到它通过 Storage 队列进行处理),但由于某种原因,在 Distributor 上创建了一个名为
的输出队列
'DIRECT=TCP:xx.xx.xx.xx\PRIVATE$\order_queue$什么时候应该调用队列
'DIRECT=OS:WORKERDNSNAME\private$\myqueue'。
有人知道为什么要创建 order_queue$ 吗?
【问题讨论】:
标签:
msmq
nservicebus
worker
nservicebus-distributor
【解决方案1】:
直接来自pg2e.blogspot.co.uk的旧帖子的无耻复制:
来自专用网络的 HTTP 事务队列
当通过 http/s 从
没有公共 IP 地址的服务器,ACK 消息可能很难
到达目的地的时间。这是由于与中相同的原因
this post (基本上是 NATting 导致与消息目标地址不匹配)。
默认情况下,收据会发送到发送计算机的名称,即
除非双方都住在同一个地方,否则当然不会工作
网络。要解决此问题,您必须将收据映射到公共地址
发件人的。这是通过在
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$ 队列用于处理事务控制消息。
我怀疑更高版本的 MSMQ 或 NServiceBus 会自动处理创建此队列,而无需您自己创建 XML 文件。