每个进程的最大IEndpointInstances

时间:2016-07-07 01:09:54

标签: nservicebus nservicebus-sagas

单个流程中托管的唯一IEndpointInstances数量是否有上限?

我考虑的设计最多可以看到100个唯一的IEndpointInstances,所有人都在不同的队列中进行监听,同时处于活动状态。

这会导致NServiceBus出现问题吗?进程是否会死锁或启动这么多线程以致无响应且无用?

问题NServiceBus - How to get separate queue for each message type receiver subscribes to?似乎表明您不能在流程中拥有多个端点,但这是一篇较旧的帖子。我已经建立了一个针对NServiceBus 6 - beta4 的小样本,确实有效。

有一个类似的问题NServiceBus Single Process, but Multiple Input queues得出结论,基于OP的上下文使用Satellite Features是推荐的方法。 然而,在我的情况下,我有100个(功能不同的)传奇(每个队列1个),其中每个传奇可能需要接收类似的消息,但我需要确保只有正确的传奇才能收到信息。因此,我不认为实现自定义功能将符合我的要求。 或卫星功能是否支持Sagas?

1 个答案:

答案 0 :(得分:4)

其中一个选项是使用self multi hosting。使用这种方法,您可以在同一个过程中自己使用端点。有几点需要考虑,例如:

  • Assembly scanning(每个端点可能需要自定义扫描逻辑)。
  • 吞吐量(对于大吞吐量端点,我建议单独的托管过程)。
  • 要更新/重新部署单个端点,您将同时关闭所有其他99个端点。

虽然可以共同托管多少个端点没有硬限制,但100个声音听起来有点多。这样说,它还取决于这些端点上的负载有多重。如果您处理1 msg / sec或1K msg / sec,如果这是一个可行的选项,则确定很多。

查看完全相同的sample