2

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

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

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

4

2 回答 2

1

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

于 2013-05-16T04:57:16.303 回答
1

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

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

@ 符号使端点认为您指的是远程队列。您不能将远程队列用于端点的输入队列,因为尝试在 MSMQ 上执行远程事务接收的性能非常差。(请参阅使用分发器进行负载平衡的“MSMQ v4 怎么样”部分)

如果更改部署拓扑是您要完成的任务,Udi 的回答是非常正确的。

于 2013-05-16T12:57:15.517 回答