RabbitMQ 的 Unacked 越攒越多,连接还被 blocked 了:一条忘了 ack 的消息引发的血案
管理界面里 Unacked 涨到 12 万,内存水位告警、生产者连接被 blocked。用 rabbitmqctl list_queues / list_channels / list_connections 定位忘记 ack 的消费者,讲清 prefetch、内存与磁盘水位流控、死信与 TTL,并给出止血与根治配置。
从一个关键词,发现新的思路。
管理界面里 Unacked 涨到 12 万,内存水位告警、生产者连接被 blocked。用 rabbitmqctl list_queues / list_channels / list_connections 定位忘记 ack 的消费者,讲清 prefetch、内存与磁盘水位流控、死信与 TTL,并给出止血与根治配置。
不局限某一种 MQ,先把消息队列的通用命题讲清楚:削峰、解耦、异步、最终一致四大价值,RocketMQ/Kafka/RabbitMQ 的选型对比,以及消息丢失、重复消费、顺序性、堆积、幂等、事务消息这六个绕不开的问题与通用解法。
RabbitMQ 的 AMQP 模型讲透:四种 Exchange 的路由规则与选型、手动 ack 与 confirm 机制、死信队列 DLX、延迟消息的两种实现、镜像队列与 quorum queue,附常用管理命令和一次消息堆积把磁盘写满的排查记录。