2

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

我正在考虑一种设计,该设计将看到多达 100 个独特的IEndpointInstances,都在单独的队列上侦听,同时处于活动状态。

这会对 NServiceBus 造成问题吗? 进程是否会死锁或启动太多线程以致无响应且无用?

问题NServiceBus - 如何为每个接收者订阅的消息类型获取单独的队列?似乎表明您不能在一个进程中拥有多个端点,但这是一篇较旧的帖子。我已经针对 NServiceBus 6-- beta4 构建了一个小样本,它确实有效。

有一个类似的问题NServiceBus Single Process, 但是基于 OP 的上下文使用Satellite Features结束的 Multiple Input queues是推荐的方法。 但是,就我而言,我有 100 个(功能不同)saga(每个队列 1 个),每个 saga 可能需要接收类似的消息,但我需要确保只有正确的 saga 才能接收消息。因此,我认为实现自定义功能不会满足我的要求。 或者 Satellite Features 会支持 Sagas 吗?

4

1 回答 1

4

一种选择是使用self multi hosting。使用这种方法,您可以在同一过程中自行创建端点。有一些事情需要考虑,例如:

  • 程序集扫描(可能需要每个端点的自定义扫描逻辑)。
  • 吞吐量(对于高吞吐量端点,我建议使用单独的托管进程)。
  • 要更新/重新部署单个端点,您还将关闭所有其他 99 个端点。

虽然对可以共同托管的端点数量没有硬性限制,但 100 个听起来有点多。话虽如此,这还取决于这些端点上的负载有多大。如果您处理 1 msg/sec 或 1K msg/sec,请确定这是否可行。

看看正是这样做的样本。

于 2016-07-07T07:20:37.170 回答