【问题标题】:rabbitmq - prefetch count per consumerrabbitmq - 每个消费者的预取计数
【发布时间】:2016-08-18 14:31:40
【问题描述】:

我想使用node-amqp 库为RabbitMQ 创建多个消费者,但我不明白prefetch-count 选项是否指的是每个消费者的计数。我希望每个消费者都有自己的不依赖于其他消费者的预取计数。

谢谢。

【问题讨论】:

  • FWIW - 你不应该使用 node-amqp。该库有许多已知的内存泄漏和错误,会导致严重问题。 RabbitMQ 团队推荐使用“amqplib”(又名 amqp.node):github.com/squaremo/amqp.node

标签: node.js rabbitmq node-amqp


【解决方案1】:

可以为单个消费者设置,但可以同时为多个消费者设置。只需查找标题示例 - 单一消费者 here。所以 AMQP 支持它。我不确定您提到的库,但在官方 java lib 上就是这样 - 对 AMQP 的 basic.qos 方法透明。 同样来自上述链接

请注意,在大多数 API 中,全局标志的默认值为 false

当 global==false 时用于 rabbitmq

prefetch_count 分别应用于通道上的每个新消费者

所以您需要了解它是如何在该库中实现的。

另外考虑使用 amqp.node 库,因为这个库用于 rabbimtq 教程。 (编辑我现在才看到 Derick Bailey 已经提到过。)

【讨论】:

  • 我认为 rabbitmq 的默认设置不是全局的,因此预取将按通道设置。因此,您应该在使用此设置时将您的消费者限制为每个通道的单个队列
  • 是的,这也是我从文档中了解到的。我也同意 - 1 个频道、1 个消费者、1 个队列。我没有偶然发现一个用例,否则会更好,无论如何它最有意义。
  • @DerickBailey 看这里,rabbitmq.com/consumer-prefetch.html,当 global 设置为 False(这是默认值)时,似乎多个消费者会获得自己的预取计数。这可能是在新版本的 Rabbit 中添加的(这篇文章是两年前的)还是我误解了这个?
猜你喜欢
  • 2016-08-21
  • 2021-10-11
  • 1970-01-01
  • 2020-01-08
  • 2019-12-13
  • 1970-01-01
  • 2011-04-15
  • 1970-01-01
  • 2017-04-13
相关资源
最近更新 更多