首页 文章

Worker节点处理来自两个分发器的消息

提问于
浏览
1

我在nServicebus组中提出了同样的问题 . 我没有得到支持这个功能的坚定答案 . 我想在这里发帖,看看SO社区的想法 .

http://tech.groups.yahoo.com/group/nservicebus/message/16487

我已经有Windows处理器工作节点来处理来自分发服务器的消息 . 现在,我想扩展此工作节点以处理来自具有不同队列名称的另一个分发服务器的消息 . 当我查看单播总线配置时,我发现只能设置一个分配器控制和数据地址 . 有没有办法在NServiceBus配置中设置多个分发服务器?如果您还解释了使用处理多个经销商的利弊,那将有所帮助 .

1 回答

  • 2

    听起来你可能正在使用NServiceBus 2.x,因为在NServiceBus 3.0中,Distributor的故事发生了很大变化 .

    在NServiceBus 2.x下,您通常会设置多个 endpoints ,所有 endpoints 都与同一个分发服务器通信 . 这些 endpoints 成为工作节点,并且分发器根据每个工作节点报告何时具有空闲线程来划分它们之间的工作 .

    因此,如果您有来自X.Worker@Server1和X.Worker@Server2处理的队列X的消息负载,那么为什么您希望其中一个X.Worker实例处理即将发生的消息对我没有意义进入队列Y?

    相反,您应该(通常)为每个逻辑服务设置一个分发服务器 . 这类似于HTTP流量的网络负载均衡器 . 然后,它后面的 endpoints 充当工作节点 . 您可以为其他逻辑服务设置具有自己的工作节点的第二个分发服务器 .

    现在,尽管如此,在NServiceBus 3.x中,分发器与 endpoints 集成在一起 . 因此,您从一个配置为主节点的 endpoints 开始 . 基本上它起着经销商和 Worker 的作用 . 然后,为了向外扩展,您只需在Worker角色中站起来更多节点,指向主节点以获得他们的工作 .

    在这种情况下,(通常)没有独立经销商 . 这就是为什么我猜你指的是V2 .

相关问题