“怎么还没收到短信?”RocketMQ 堆了 300 万条消息,我从 Diff Total 一路追到一个死循环重试
用户投诉验证码半小时没到,RocketMQ 短信 Topic 堆积 300 万。用 mqadmin consumerProgress / consumerConnection / topicStatus 判断是消费慢还是消费者掉线,定位到线程卡在下游接口与失败无限重试,并给出扩容、批量消费、死信与跳过历史消息的处置。
RocketMQ / RabbitMQ / Kafka:堆积、重复消费、丢消息、死信。
用户投诉验证码半小时没到,RocketMQ 短信 Topic 堆积 300 万。用 mqadmin consumerProgress / consumerConnection / topicStatus 判断是消费慢还是消费者掉线,定位到线程卡在下游接口与失败无限重试,并给出扩容、批量消费、死信与跳过历史消息的处置。
同一天两起投诉:验证码收到两条、一笔扣款没有对应的消息。以 RocketMQ 为主,讲清 at-least-once 下重复消费的根源(超时重投、重平衡、重试),落地唯一键/去重表/状态机/SETNX 幂等;再沿生产端、Broker、消费端三环节查丢消息并给出配置。
管理界面里 Unacked 涨到 12 万,内存水位告警、生产者连接被 blocked。用 rabbitmqctl list_queues / list_channels / list_connections 定位忘记 ack 的消费者,讲清 prefetch、内存与磁盘水位流控、死信与 TTL,并给出止血与根治配置。