上一题下一题

RabbitMQ prefetch 参数如何限制未确认消息数量,并影响吞吐、公平分发与消费者内存压力?

基础版
来源:jd高级工程师消费者内存压力消费吞吐量调优消费者公平分发RabbitMQ prefetch
草稿该题目为草稿状态,前台公开题库中不可见。
答案解析

RabbitMQ 的 prefetch 用来限制消费者同时持有的未确认消息数量。消费者收到消息但还没有发送 basic.ack、basic.nack 或 basic.reject 时,这条消息就计入未确认数量;达到 prefetch 上限后,RabbitMQ 暂停向该消费者投递新消息,直到有消息得到确认。

例如设置 prefetch = 10,消费者最多同时处理 10 条未确认消息。若设置为 0,通常表示不限制。实际配置时还要注意 prefetch 的作用范围:在 AMQP 0 9 1 中,RabbitMQ 通常按消费者应用该限制;设置 global 时可按信道共享限制,具体行为取决于客户端和 RabbitMQ 版本。

它会直接影响吞吐和分发公平性。prefetch 较大时,Broker 可以提前把更多消息发给消费者,减少等待确认的空档,通常有利于提高吞吐;但消息会更早地被分配到消费者手里,若各消费者处理速度不同,慢消费者可能囤积大量消息,其他消费者却拿不到这些已分配的消息。prefetch 较小则更接近按处理能力逐条补货,分发更公平,但确认和调度更频繁

登录后查看完整内容