首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NServiceBus 7并发性质疑

NServiceBus 7并发性质疑
EN

Stack Overflow用户
提问于 2021-02-26 17:37:07
回答 1查看 94关注 0票数 0

在NServicebus 7中,您可以设置并发性,这意味着您可以决定您的软件可以并行处理队列中的消息数量。这可以在NserviceBus端点级别完成。

我对这个概念毫不怀疑:

  1. 并发是每个队列,而不是每个消息类型?对吗?
  2. ,如果我使用卫星--这意味着我将有N个不同的队列(例如:每个消息类型一个),并发性仍然是每个队列?

例如:

  1. I配置了一个端点(SO1队列),并将并发级别设置为10。我管理5个不同的命令(处理程序)。所有命令都存储在同一个队列中,混合在一起。在这种情况下,端点可以在不考虑类型的情况下每次从队列中获取10个命令,对吗?
  2. ,在第二个场景中,我有5个卫星管理5种消息类型,每种类型有一个专用队列。在这种情况下,每个卫星可以每次从其队列中接收10条消息?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-01 14:37:46

卫星是一种先进的功能,用于原始信息处理,而没有NServiceBus消息处理管道的所有好处。使用它们是不正常的--它们在实现消息传输时最常用。例如,RabbitMQ传输将卫星用于使端点实例可单独寻址的特性,因此在代理上有一个QueueName队列和一个QueueName-InstanceName队列,以便另一个端点可以执行context.Reply(),并让应答转到发送原始命令的特定服务器。无论如何,每个卫星都分别管理其并发性,因为它是一个更低级别的构造。

所以是的,通过主队列的并发性是针对端点实例的,而不是针对每种消息类型的,因为端点和队列之间存在1:1的关系,您不能按类型选择性地从队列中提取消息。

因此,端点是您的可伸缩性单元,既可以扩展(通过增加并发性),也可以扩展到out (通过在不同服务器上添加更多的端点实例)。

这意味着您应该小心在同一个端点中处理的消息类型。他们通常应该拥有相同的SLA。你不会想要一堆需要50毫秒才能处理的消息,在处理了20秒的过多信息之后就被搁置了。

有些人会把这个问题搞得极端化,每种消息类型都有一个端点。这种复杂程度通常是不必要的,但它确实为您提供了对每一种消息类型的可伸缩性的最终控制。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66390412

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档