我有两个端点。
端点1:
网络端点: - 此时没有处理程序,只需向总线发送命令。
发生以下情况:
自MessageY以来,MessageZ有不同的处理程序,这不可能同时完成吗?
创建另一个端点或将其移动到另一个端点不是一种选择。我只是希望它在涉及不同类型的消息(和处理程序)时是多线程的。我不明白为什么这不是默认行为。
如何配置nservicebus从不同类型(使用不同的处理程序)同时处理多条消息?
NServiceBus 4.6.5(或者如果我需要升级到5,很好我不介意。只是想让它多线程)。 传输:SqlServer和另一个项目Windows Azure Service Bus
答案 0 :(得分:2)
除非自我开始使用NServiceBus后发生变化,"unlicenced"
版本只运行1个工作线程,因此它一次只处理1条消息。
您可以通过更改传输上的NumberOfWorkerThreads
值来更改配置中的此值,但是您需要有效的许可才能将数字增加到1
以上。
<MsmqTransportConfig MaxRetries="0" NumberOfWorkerThreads="1" />
在NServiceBus v4中,您需要在MaximumConcurrencyLevel
上配置TransportConfig
值:
<TransportConfig MaximumConcurrencyLevel="5"
MaxRetries="2"
MaximumMessageThroughputPerSecond="0"/>
答案 1 :(得分:0)
如果我的方案正确无误,那么这是一个单一的交易/工作单元......
Web端点向端点发送消息调用所有消息,并从该处理程序调度所有后续消息...因此即使端点可以是多线程的,它们也都是相同的序列化交易,所以如果我没有错,他们将是顺序的...
如果您不想运行多个端点,请查看描述在同一进程中运行多个端点的此问题:https://github.com/Particular/NServiceBus/issues/1357
这有帮助吗?