交互式可视化 · RabbitMQ / Kafka / Redis Stream
消息积压 是指消息在队列中等待处理的数量持续增长, 超过系统的正常处理能力,导致消息堆积、延迟增加、服务响应变慢。
调整生产速度和消费速度,观察消息积压的变化:
生产者发送消息的速度远超消费者处理能力
消费者处理能力不足,无法及时消费积压消息
网络、磁盘、数据库等基础设施限制
立即增加消费者实例数量,加快消息处理速度
将消息分为紧急/普通/批量三级,优先处理重要消息
设置消息 TTL,过期消息自动删除或转入死信队列
当系统过载时自动降级,保护下游服务
队列中等待处理的消息总数,反映当前积压程度
> 1000 需关注消息从入队到被消费的时间差,越大表示积压越严重
> 5分钟 危险消费者每秒处理的消息数量,低于生产速度会持续积压
需 > 生产速度消息队列 Broker 的资源消耗,高负载影响性能
> 80% 警告处理失败的消息比例,频繁失败会加剧积压
> 1% 异常消息被重新消费的次数,过多重试会形成死循环
> 3次 需检查根据峰值流量预留 3-5 倍的队列容量,设置合理的消息 TTL 和存储策略
设置队列深度、延迟、消费失败率等核心指标的多级告警阈值
消费者必须支持幂等操作,避免消息重复消费导致的数据问题
消费者关闭前必须处理完当前批次消息,避免消息丢失
引入唯一消息 ID + Redis 布隆过滤器,识别并丢弃重复消息
批量消费 + 批量 ACK,显著提升消费吞吐量
| 特性 | RabbitMQ | Kafka | Redis Stream |
|---|---|---|---|
| 最大积压 | 内存限制 | TB 级别 | 内存 + AOF |
| 消费模式 | 推 (Push) | 拉 (Pull) | 拉 (XREAD) |
| 扩容速度 | 中等 | 快速 | 最快 |
| 消息顺序 | 单队列有序 | 分区有序 | ID 有序 |
| 积压处理建议 | 增加消费者 惰性队列 |
增加分区 消费者扩容 |
增加消费者组 快读读取 |