首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Masstransit/RabbitMQ中组织队列?

如何在Masstransit/RabbitMQ中组织队列?
EN

Stack Overflow用户
提问于 2017-10-20 09:58:40
回答 1查看 1.6K关注 0票数 6

我想知道使用信息的最佳实践。我读过MassTransit文档,并对此进行了搜索,但我没有得出任何结论。

我有一个api (承载一个总线实例),它发布消息。这些消息是不同的,因为这个api不是一个微服务(用于购买、销售等的消息)。

如何组织我的消费者/队列?

  1. 用于队列类型的一个进程?(例如,用于购买、其他用于销售等)该解决方案可能涉及多个进程,我不确定它是否是一个好的解决方案。如果我想要不同的排队购买,如purchases.stock,purchases.suppliers等?工序数量可大幅度增加。我认为这是一个很好的可伸缩性选择,但是管理这么多进程可能会很棘手。
  2. 进程(按域分组队列)的多个队列?例如,有一个进程让多个消费者消费与采购相关的消息,并管理不同的队列,如purchases.stock、purchases.suppliers.这个选择对我来说更有意义,但我不确定。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-22 13:29:07

关键的概念是避免为不同的消息类型共享单个队列。虽然有例外情况,但是将每个消息类型保持在单独的队列中可以防止当一种消息类型主导队列通信时的瓶颈。

至于流程,由于MassTransit可以在每个总线实例中拥有任意数量的接收端点,因此将相关业务功能保持在单个流程中可以大大有助于代码管理和部署。流程边界对于扩展非常有用,例如,添加更多的流程/工作人员来处理状态更新而不是新订单(就消息量而言,前者可能是后者的10倍)。

分离的另一个原因是依赖关系,它与具有大量绑定或耦合到外部库/SDKs的遗留ERP系统通信,可能需要单独处理,以避免某些旧库的创建方式导致内存问题。这些库可能需要更频繁的流程重新启动等,并且保持它们之间的分离,从而消除了重新启动一组使用者的需要,因为它会随着时间的推移导致问题。

这些只是一些一般性的指导方针,但我们在确定哪些消费者应该在相同的过程中使用这些准则时,我们一直在使用这些准则。

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

https://stackoverflow.com/questions/46846675

复制
相关文章

相似问题

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