NServiceBus - 在不同的机器上访问队列

时间:2013-05-15 21:05:36

标签: msmq nservicebus

我没有使用NServiceBus的经验,我想确定我的方案是否可以实现。我有两台机器:A和B.在机器A上部署了一个组件,它通过nservicebus将消息发送到同一台机器上的队列。我有另一个应该接收消息的组件。不幸的是,我现在无法在机器A上部署它(它可以在机器B上运行),但是我想要获取已经由发送者放置的消息。可能吗?当我尝试在接收器中定义输入队列时,如下所示:

    <MsmqTransportConfig InputQueue="RetrieverClient2@MachineA" ErrorQueue="RetrieverClient2_errors@MachineA" NumberOfWorkerThreads="1" MaxRetries="5"/>

我得到异常:输入队列必须与此进程在同一台机器上。是否有任何配置方法可用于从此远程队列中检索消息,前提是我知道它存在?

2 个答案:

答案 0 :(得分:1)

如果您要更改系统的部署拓扑,则应配置第一个组件以将其消息发送到第二台计算机,然后只需一次性手动移动留给第二个队列的消息。

答案 1 :(得分:1)

对于“localhost”上的队列,您不应包含“@localhost”。您的配置如下所示:

<MsmqTransportConfig InputQueue="RetrieverClient2" ErrorQueue="RetrieverClient2_errors" NumberOfWorkerThreads="1" MaxRetries="5"/>

@ symobl使端点认为您指的是远程队列。您不能将远程队列用于端点的输入队列,因为尝试在MSMQ上执行远程事务接收的性能非常差。 (参见Load Balancing with the Distributor

的“MSMQ v4怎么样”部分

如果您正在尝试更改部署拓扑,那么Udi的答案是完全正确的。