我没有使用NServiceBus的经验,我想确定我的方案是否可以实现。我有两台机器:A和B.在机器A上部署了一个组件,它通过nservicebus将消息发送到同一台机器上的队列。我有另一个应该接收消息的组件。不幸的是,我现在无法在机器A上部署它(它可以在机器B上运行),但是我想要获取已经由发送者放置的消息。可能吗?当我尝试在接收器中定义输入队列时,如下所示:
<MsmqTransportConfig InputQueue="RetrieverClient2@MachineA" ErrorQueue="RetrieverClient2_errors@MachineA" NumberOfWorkerThreads="1" MaxRetries="5"/>
我得到异常:输入队列必须与此进程在同一台机器上。是否有任何配置方法可用于从此远程队列中检索消息,前提是我知道它存在?
答案 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的答案是完全正确的。