【问题标题】:NServiceBus worker endpointsNServiceBus 工作人员端点
【发布时间】:2013-03-08 21:32:10
【问题描述】:

我目前正在评估 NSB 中的分发服务器,并注意到当我在自己的机器上运行分发服务器和几个工作人员时,每个工作人员的队列名称都会附加一个 Guid。

根据Udi,大师本人:),在这篇文章中:Distributor and worker end point queue in same machine

原因是 NSB 假定您在测试设置中运行。

问题:

但是如果我在 1 台单独的机器上运行 4 名工人会发生什么? 那台机器上的队列名称是否会再次附加一个 GuidOR 工作人员是否能够仅仅因为分发服务器在远程机器上而共享同一个队列?

这个问题很重要,因为我确实希望在一台远程机器上有多个工作人员,并且每次机器启动时生成新的队列名称对于维护目的来说不是一个好主意。

亲切的问候

【问题讨论】:

    标签: msmq nservicebus nservicebus-distributor


    【解决方案1】:

    但是,如果我在 1 台单独的机器上运行 4 个工人会发生什么?
    为什么要这样做?

    每个工作线程都可以配置为运行多个工作线程。这就是为什么在一台机器上运行多个工作人员没有意义......

    我会增加单个工作人员正在使用的线程数,直到该机器上达到最大吞吐量。然后,扩展到另一台机器......所以,每个盒子一个工人,每个工人多个线程

    有关NumberOfWorkerThreads 配置的详细信息,请参阅here

    【讨论】:

    • 我想要多个进程的原因是因为我们正在使用 NSB 来横向扩展一个旧系统,该系统由于一些非常糟糕的设计而极难实现多线程。在具有 1 个进程和 1 个线程的单独处理程序中运行每条消息为我们提供了 100% 的分离,这意味着我们可以快速横向扩展,而无需重写旧代码,这对线程来说是危险的。我们已经尝试了一段时间来实现相似性,但收效甚微或没有成功。也就是说,我还没有尝试在 NSB 工作人员中启用多个线程。 NSB 可能有更好的线程分离,我会在这个问题上回复你。
    • 只需在同一台机器上运行同一端点的多个副本。这会给你你想要的
    • 谢谢,但是我目前正在在同一台机器上运行多个工作人员副本,但这也是导致每个工作人员出现一个附加了 Guid 的队列的原因(工作人员托管在我自己的过程)。有没有办法绕过 Guid,同时在同一台机器上运行多个工人副本?我是否遗漏了有关此处工作人员中的分发者端点设置的重要信息?
    • 按原样运行它们,不要将它们配置为工人。不需要分销商,因为所有人都将在同一个 q 上竞争消费者
    • 为了给 Andreas 的评论添加更多内容,多个进程可以在本地机器上与同一个队列竞争消息,这很好。我们有一个分发器的原因是因为在具有事务控制的远程队列上的竞争消费者在 MSMQ 中不能很好地工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多