RabbitMQ如何限制消费者

bay*_*ezy 24 rabbitmq

我成功使用RabbitMQ.但是,我有一个问题,如果我遇到队列中有大量消息的情况,那么消费者(Windows服务)会尝试全部获取它们然后只是保留它们但从不动作或确认它们.

当处于就绪状态的消息数量较少时,消费者处理吞吐量很好,就好像存在问题并且存在积压,那么它就太贪婪了.

有没有办法配置消费者在任何时候尝试并承担责任的最大消息数量?

我可以看到该RequestedChannelMax字段RabbitMQ.Client.ConnectionFactory是否正确设置限制此?

谢谢

小智 34

默认情况下,消费者将读取带宽可以处理的消息数量,而不管消费者的实际消息处理时间如何.

您需要通过修改通道的服务质量(QoS)来设置预取值,以限制它一次尝试拾取的消息数量.在这里查看basic.qos .它有3个参数,一个大小(以八位字节为单位),一个计数(它将一次拾取的整个消息的数量)和一个全局标志.

如果您对优化吞吐量感兴趣并且有关预取约2/3页面内容的讨论,那么这篇博客文章是一本有趣的读物.

希望有所帮助!

  • 谢谢这是一个非常全面的答案,让我知道我需要什么.`_model.BasicQos(0100,假);` (4认同)