RabbitMQ 之消息积压

1. 什么是消息积压

当消息数量不断增大,超过了消费者的消费能力,就会造成消息一直存放在队列中无法被消费。

2. 为什么会产生消息积压

  • 生产者生产消息过快:生产者发送消息的速度超过了消费者消费消息的速度,就会造成消费者无法即时消费新消息,导致消息堆积
  • 消费者消费消息速度过慢:
    • 消费消息的业务逻辑复杂,耗时长
    • 消费者代码性能低
    • 内存、CPU 等资源限制
    • 消费者代码出现异常
  • 网络原因:网络不稳定或延迟,导致消费者发送的 ack 无法被服务器接收或丢失,若设置了消息重新入队列,就会造成消息重新发送,也会造成消息积压
  • RabbitMQ 服务器配置偏低

3. 如何处理消息积压

  • 提高消费者消费效率:
    • 优化消费者代码逻辑
    • 设置 prefetch 参数,限制队列最多能容纳消息的数量
    • 当处理消息发生异常时,将消息放入死信队列
  • 降低生产者发送消息的速度:
    • 流量控制:根据消费者处理消息的速率,动态控制生产者发送消息的速率
    • 限流:使用限流工具,为消息发送速率设置一个上限
  • 升级 RabbitMQ 服务器配置
相关推荐
柒.梧.19 分钟前
Redis架构演进:从主从到Cluster,读懂高可用与分布式核心
redis·分布式·架构
渔民小镇35 分钟前
不用前端也能测试 —— 模拟客户端请求模块详解
java·服务器·前端·分布式·游戏
IT莫染1 小时前
Spring Boot 集成 RabbitMQ MQTT 协议实现消息通信
rabbitmq
星辰_mya2 小时前
雪花算法:分布式世界的“身份证号”
分布式
AIminminHu2 小时前
OpenGL渲染与几何内核那点事-项目实践理论补充(一-2-(3)-当你的协同CAD服务器面临“千人同屏”时:从单机优化到分布式高并发)
运维·服务器·分布式
真上帝的左手3 小时前
12. 消息队列-RabbitMQ-高可用核心机制
分布式·rabbitmq·java-rabbitmq·mq
xiaohuoji1294 小时前
SpringBoot中整合RabbitMQ(测试+部署上线 最完整)
spring boot·rabbitmq·java-rabbitmq
枫叶v.4 小时前
Kafka 怎么保证消息的顺序性
分布式·kafka
yitian_hm6 小时前
深入理解 Kafka Producer 核心源码:消息发送全链路解析
分布式·kafka·linq
Dylan~~~16 小时前
深度解析Cassandra:分布式数据库的王者之路
数据库·分布式