面试复习:消息队列 Kafka / RocketMQ / RabbitMQ(可靠性、幂等、顺序、事务消息、积压,初中高级三层)
按初级/中级/高级三层整理消息队列面试:三款 MQ 选型对比、投递可靠性三段保证、重复消费与幂等、顺序消息、事务消息、积压与延迟消息处理、Kafka 高吞吐原理与 RocketMQ 存储模型,附追问链与速查表。
从一个关键词,发现新的思路。
按初级/中级/高级三层整理消息队列面试:三款 MQ 选型对比、投递可靠性三段保证、重复消费与幂等、顺序消息、事务消息、积压与延迟消息处理、Kafka 高吞吐原理与 RocketMQ 存储模型,附追问链与速查表。
用户投诉验证码半小时没到,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,并给出止血与根治配置。
不局限某一种 MQ,先把消息队列的通用命题讲清楚:削峰、解耦、异步、最终一致四大价值,RocketMQ/Kafka/RabbitMQ 的选型对比,以及消息丢失、重复消费、顺序性、堆积、幂等、事务消息这六个绕不开的问题与通用解法。
Kafka 的核心概念与设计要点:Topic/Partition/Replica/ISR 的关系,消费者组与 offset 提交语义,顺序写 + 零拷贝 + 批量压缩为什么能撑起百万吞吐,附生产配置、常用命令和消息积压、重复消费的处理方式。
RocketMQ 从部署到生产的完整笔记:NameServer/Broker/Producer/Consumer 架构与 CommitLog 存储设计,普通/顺序/事务/延迟消息的写法与适用边界,消息堆积与重复消费的排查套路,附常用 mqadmin 命令和一份生产参数配置。
RabbitMQ 的 AMQP 模型讲透:四种 Exchange 的路由规则与选型、手动 ack 与 confirm 机制、死信队列 DLX、延迟消息的两种实现、镜像队列与 quorum queue,附常用管理命令和一次消息堆积把磁盘写满的排查记录。