NServiceBus是否在同一台物理计算机上支持同一订户的多个实例?

时间:2011-04-01 16:39:03

标签: msmq nservicebus publish-subscribe

我们有一个与发布者和订阅者组件一起运行的NService原型。

如果我们在同一台物理计算机上实例化同一订户的多个副本,那么其中只有一个会收到任何给定的已发布消息 - 但如果我们在多台计算机上分别运行一个订阅者,则它会按预期工作。

看来我们不能在同一个盒子上有两个进程同时实现IHandleMessage并且都订阅了相同的消息队列,因为发布者无法知道有两个单独的订阅者参与...

我们是对的吗?这是设计上的行为,还是我们错误配置了什么?

1 个答案:

答案 0 :(得分:4)

您可以在同一台物理计算机上拥有多个订阅者 - 他们只需要独立的输入队列。

这意味着您无法在同一个可执行文件和配置文件集合中运行多个流程实例 - 您必须在不同的文件夹中复制它们并更改另一个实例上的配置。

这基本上是NServiceBus代码中包含的PubSub示例所示。

您现在看到的是每个订阅者(具有相同的输入队列,因此具有相同的“身份”)从彼此窃取消息 - 基本上通过使用更多进程进行多线程处理。