← 学习中心

消息队列:Kafka/RabbitMQ、可靠投递、幂等与削峰

为什么用 MQ,常见中间件对比,消息不丢失/不重复消费的套路,以及削峰填谷。

本节你将能

说清引入 MQ 的收益与代价,以及保证可靠与幂等的工程手段。

核心要点

  • 价值:异步解耦、削峰填谷、削峰(流量整形)、数据分发。
  • 可靠投递:生产者 confirm/事务;Broker 刷盘+副本;消费者手动 ack,处理完再提交。
  • 重复消费:消息自带业务唯一键,消费端做幂等(唯一索引/Redis 去重/状态机)。
  • 顺序消息:Kafka 按 key 分区保局部有序;RabbitMQ 单队列单消费者。
  • 对比:Kafka 高吞吐、日志/大数据;RabbitMQ 低延迟、路由灵活、企业集成。

面试连招

常被追问:消息积压怎么办?如何保证 Exactly-Once?Kafka 为什么快(顺序写+零拷贝+批量)?

常见坑

把 MQ 当同步调用用;幂等没做导致重复下单;消费者处理慢引发积压雪崩。

消息队列:Kafka/RabbitMQ、可靠投递、幂等与削峰 | 必学必会