0


RabbitMQ高级特性 - 消息分发(限流、负载均衡)

文章目录

RabbitMQ 消息分发


概述

RabbitMQ 的队列在有多个消费者订阅时,默认会通过

轮询

的机制将消息分发给不同的消费者,但是有些消费者消费速度慢,有些消费者消费速度快,就会导致消费速度慢的消费者影响整个的任务的

吞吐量下降

.

例如,公司有1个正式员工和1个实习生,现在有 10 个任务分配平均给他们(各 5 个),而由于实习生干活比较慢,就会导致整个完成任务的吞吐量下降.

消息分发机制给 “正式工” 多分一些任务,给 “实习生” 少分一些任务.

如何实现消费分发机制(限制每个队列消息数量)

可以在配置文件中配置

prefetchCount

(或者使用原生的

channel.basicQos(int prefetchCount)

),来限制当前消息通道上(channel)的每一个消费所能保持的最大未确认消息的数量.

例如 prefetchCount 为 10,并且一个 channel 上有两个消费者,那么每个消费者都最多接收 10 条未确认的消息. 此时整个 channel 上未确认消息总数可能达到 20 条.

具体使用:例如配置

prefetch = 5

,那么 RabbitMQ 就会为消费者计数. 发送一条消息计数+1,消费一条消息计数-1,当达到了上限5,mq队列 就不会再发送消息,直到消费者确认了某条消息(类


本文转载自: https://blog.csdn.net/CYK_byte/article/details/140891895
版权归原作者 陈亦康 所有, 如有侵权,请联系我们删除。

“RabbitMQ高级特性 - 消息分发(限流、负载均衡)”的评论:

还没有评论