1. 什么是消息积压
当消息数量不断增大,超过了消费者的消费能力,就会造成消息一直存放在队列中无法被消费。
2. 为什么会产生消息积压
- 生产者生产消息过快:生产者发送消息的速度超过了消费者消费消息的速度,就会造成消费者无法即时消费新消息,导致消息堆积
 - 消费者消费消息速度过慢:
- 消费消息的业务逻辑复杂,耗时长
 - 消费者代码性能低
 - 内存、CPU 等资源限制
 - 消费者代码出现异常
 
 - 网络原因:网络不稳定或延迟,导致消费者发送的 ack 无法被服务器接收或丢失,若设置了消息重新入队列,就会造成消息重新发送,也会造成消息积压
 - RabbitMQ 服务器配置偏低
 
3. 如何处理消息积压
- 提高消费者消费效率:
- 优化消费者代码逻辑
 - 设置 prefetch 参数,限制队列最多能容纳消息的数量
 - 当处理消息发生异常时,将消息放入死信队列
 
 - 降低生产者发送消息的速度:
- 流量控制:根据消费者处理消息的速率,动态控制生产者发送消息的速率
 - 限流:使用限流工具,为消息发送速率设置一个上限
 
 - 升级 RabbitMQ 服务器配置