gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 19:29:12 29 4
gpt4 key购买 nike

我想知道使用消息的最佳做法。我已经阅读了 MassTransit 文档,并且正在搜索相关内容,但我没有得出任何结论。

我有一个发布消息的 api(托管总线实例)。这些消息是多种多样的,因为这个 api 不是微服务(用于购买、销售等的消息)。

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

  • 队列类型的一个过程? 例如一个用于购买,另一个用于销售等。此解决方案可能涉及许多流程,我不确定它是否是一个好的解决方案。如果我想要不同的采购队列,例如 purchase.stock、purchasing.suppliers 等,该怎么办?进程数可能会大大增加。我认为这是可扩展性的一个很好的选择,但是管理这么多进程可能会很棘手。
  • 进程的多个队列 (按域分组队列)?例如,一个进程有多个消费者消费与购买相关的消息并管理不同的队列,如购买.库存、购买.供应商......这个选项对我来说更有意义,但我不确定。
  • 最佳答案

    关键概念是避免为不同的消息类型共享一个队列。也有异常(exception),但是当一种消息类型支配队列流量时,将每种消息类型保留在单独的队列中可以防止出现瓶颈。

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

    分离的另一个原因是依赖关系,与具有大量绑定(bind)或耦合到外部库/SDK 的遗留 ERP 系统通信的消费者可能需要一个单独的进程,以避免由于某些旧库的创建方式而导致的内存问题。这些库可能需要更频繁的进程重启等,并且将它们分开可以消除为随着时间的推移导致问题的消费者重启一整套消费者的需要。

    这些只是一些一般准则,但我们在确定将哪些消费者放入同一流程时一直使用这些准则。

    关于rabbitmq - 如何在 Masstransit/RabbitMQ 中组织队列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46846675/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com