NServicebus – 一个端点多个处理程序线程

我有两个端点。

终点1:

  • HandlerForMessage X.
  • HandlerForMessage Y.
  • HandlerForMessage Z.

Web端点: – 此时没有处理程序,只是向总线发送命令。

发生以下情况:

  1. Web – >发送(..);
  2. 端点1:接收MessageX
  3. 端点1:处理MessageX和Handler Bus.Send ()和Bus.Send ()
  4. 端点1:接收MessageY,处理它(这需要20秒)
  5. 端点1:20秒后,处理MessageY后,接收MessageZ并处理它。

自MessageY以来,MessageZ有不同的处理程序,这不可能同时完成吗?

创建另一个端点或将其移动到另一个端点不是一种选择。 我只是希望它在涉及不同类型的消息(和处理程序)时是multithreading的。 我不明白为什么这不是默认行为。

如何配置nservicebus以从不同类型(使用不同的处理程序)同时处理多个消息?

NServiceBus 4.6.5(或者如果我需要升级到5,那么我不介意。只是想让它multithreading)。 传输:SqlServer和另一个项目Windows Azure Service Bus

除非自从我开始使用NServiceBus后它已经改变,否则"unlicenced"版本只运行1个工作线程,因此它一次只处理1个消息。

您可以通过更改传输上的NumberOfWorkerThreads值在配置中更改此值,但是您需要有效的许可证才能将数字增加到1以上。

  

在NServiceBus v4中,您需要在TransportConfig上配置MaximumConcurrencyLevel值:

  

请参阅故障处理和限制

如果我的方案正确,这是一个单一的交易/工作单位……

Web端点向端点发送消息调用所有消息,并从该处理程序调度所有后续消息…因此即使端点可以是multithreading的,它们也都在同一事务中被序列化,所以如果我没有错,他们将是顺序的……

如果您不想运行多个端点,请查看描述在同一进程中运行多个端点的此问题: https : //github.com/Particular/NServiceBus/issues/1357

这有帮助吗?