每个进程的最大 IEndpointInstances
Max IEndpointInstances per process
单个进程中托管的唯一 IEndpointInstances
数量是否有上限?
我正在考虑一种设计,最多可以看到 100 个唯一 IEndpointInstances
,所有监听在不同的队列上,同时处于活动状态。
这会导致 NServiceBus 出现问题吗? 进程是否会死锁或启动太多线程以致于无响应和无用?
问题 NServiceBus - How to get separate queue for each message type receiver subscribes to? 似乎暗示一个进程中不能有多个端点,但这是一个较旧的问题 post。我针对 NServiceBus 6--beta4 构建了一个小样本,它确实有效。
有一个类似的问题NServiceBus Single Process, but Multiple Input queues that concluded, based on the OP's context using Satellite Features是推荐的方法。 然而, 在我的例子中,我有 100 个(功能不同的)sagas(每个队列 1 个),每个 saga 可能需要接收类似的消息,但我需要确保只有正确的saga 收到消息。因此,我认为实现自定义功能不会满足我的要求。 或者 Satellite Features 会支持 Sagas 吗?
其中一个选项是使用 self multi hosting。使用这种方法,您可以在同一过程中自己拥有端点。有几件事需要考虑,例如:
- Assembly scanning(每个端点可能需要自定义扫描逻辑)。
- 吞吐量(对于吞吐量大的端点,我建议使用单独的托管进程)。
- 对于 update/redeploy 一个端点,您将同时关闭所有其他 99 个端点。
虽然对于可以共同托管的端点数量没有硬性限制,但 100 个听起来有点多。也就是说,这还取决于这些端点上的负载有多大。如果您处理 1 msg/sec 或 1K msg/sec 确定很多这是否是一个可行的选择。
看看 sample 正是这样做的。
单个进程中托管的唯一 IEndpointInstances
数量是否有上限?
我正在考虑一种设计,最多可以看到 100 个唯一 IEndpointInstances
,所有监听在不同的队列上,同时处于活动状态。
这会导致 NServiceBus 出现问题吗? 进程是否会死锁或启动太多线程以致于无响应和无用?
问题 NServiceBus - How to get separate queue for each message type receiver subscribes to? 似乎暗示一个进程中不能有多个端点,但这是一个较旧的问题 post。我针对 NServiceBus 6--beta4 构建了一个小样本,它确实有效。
有一个类似的问题NServiceBus Single Process, but Multiple Input queues that concluded, based on the OP's context using Satellite Features是推荐的方法。 然而, 在我的例子中,我有 100 个(功能不同的)sagas(每个队列 1 个),每个 saga 可能需要接收类似的消息,但我需要确保只有正确的saga 收到消息。因此,我认为实现自定义功能不会满足我的要求。 或者 Satellite Features 会支持 Sagas 吗?
其中一个选项是使用 self multi hosting。使用这种方法,您可以在同一过程中自己拥有端点。有几件事需要考虑,例如:
- Assembly scanning(每个端点可能需要自定义扫描逻辑)。
- 吞吐量(对于吞吐量大的端点,我建议使用单独的托管进程)。
- 对于 update/redeploy 一个端点,您将同时关闭所有其他 99 个端点。
虽然对于可以共同托管的端点数量没有硬性限制,但 100 个听起来有点多。也就是说,这还取决于这些端点上的负载有多大。如果您处理 1 msg/sec 或 1K msg/sec 确定很多这是否是一个可行的选择。
看看 sample 正是这样做的。