我想了解rabbitmq per-connection flow-control如何与多个消费者合作。特别是如果一个消费者要挂起会发生什么?是否会调用流控制以及它将如何影响其他消费者?行为会取决于队列是持久还是自动删除?
感谢。
答案 0 :(得分:2)
Rabbit MQ使用“信用流控制”。
基本上,每当在频道上收到消息时,都会扣除一个信用。信用从默认级别开始,例如200,当它低于0时,连接被阻止。消耗并确认一定数量的消息后,信用额度会上升一定数量。
您可以在此处详细了解:
http://videlalvaro.github.io/2013/09/rabbitmq-internals-credit-flow-for-erlang-processes.html
答案 1 :(得分:1)
Per-connection flow control
描述了当发布者(或发布者组)以比队列处理更快的速度向队列发送消息时会发生什么。这是一个安全功能,因为RabbitMQ在队列无边界填充时会变得不稳定。从文档中,这是自动的:
RabbitMQ将阻止发布太快的连接,以便队列跟上。无需配置。
不幸的是,除了“每秒几次”之外,文档对于何时/如何实现此流控制并不十分具体。因此,如果一个消费者陷入困境,只要其他消费者能够跟上,就不应该触发流量控制。