RabbitMQ如何限制消费者

时间:2013-10-03 15:21:44

标签: rabbitmq

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

当处于就绪状态的消息数量较少时,消费者处理吞吐量就会很好,只要出现问题并且存在待办事项,那就太贪婪了。

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

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

由于

1 个答案:

答案 0 :(得分:27)

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

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

This blog post是一个有趣的读物,如果您对优化吞吐量感兴趣并谈论预取约2/3的页面。

希望有所帮助!