RabbitMQ如何限制消费者

RabbitMQ如何限制消费者,rabbitmq,Rabbitmq,我正在成功地使用RabbitMQ。但是,我有一个问题,如果我遇到队列中有大量消息的情况,那么消费者(Windows服务)会尝试获取所有消息,然后只保留它们,而从不采取行动或确认它们 当处于就绪状态的消息数量较低时,消费者将处理吞吐量问题,这只是因为如果出现了问题并且存在积压,那么它就会变得过于贪婪 有没有办法配置消费者在任何时候尝试并负责的最大消息数 我可以看到RabbitMQ.Client.ConnectionFactory上的RequestedChannelMax字段,这是限制此值的正确设置

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

当处于就绪状态的消息数量较低时,消费者将处理吞吐量问题,这只是因为如果出现了问题并且存在积压,那么它就会变得过于贪婪

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

我可以看到
RabbitMQ.Client.ConnectionFactory
上的
RequestedChannelMax
字段,这是限制此值的正确设置吗


感谢

消费者,默认情况下,无论消费者的实际消息处理时间如何,都会读取带宽所能处理的尽可能多的消息

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

如果您对优化吞吐量感兴趣,并且在页面的2/3处讨论预取,那么这是一本有趣的读物


希望有帮助

谢谢,这是一个非常全面的答案,让我正确地找到了我需要的<代码>\u model.BasicQos(0100,false)相关: