-
前言
- 为什么要用消息队列?(解耦、削峰、异步)
- 常见 MQ 对比:Kafka、RabbitMQ、RocketMQ
- 本文聚焦 RocketMQ 的实际应用
-
RocketMQ 核心机制
- Producer、Consumer、Broker、NameServer
- 消息存储模型(CommitLog + ConsumeQueue + IndexFile)
- 顺序消息、延时消息、事务消息
-
异步任务的最佳实践
- 业务场景:导出大文件、通知下游系统、批量计算
- 生产者发送消息(带 key)
- 消费者异步消费
- 失败重试 & 死信队列
-
消息幂等性问题
-
为什么会重复消费?(网络重试、Broker ACK、消费者重启)
-
幂等解决方案:
- 唯一业务 ID + 数据库唯一约束
- Redis Set 去重
- 业务逻辑层判断(状态机模式)
-
-
实战案例
-
用户批量导出 Excel:
- Controller -> MQ -> 异步任务消费 -> 生成文件 -> OSS 存储 -> 回调通知
-
支付系统异步通知:
- 保证消息必达
- 幂等校验(支付订单状态)
-
-
性能调优
- 消息批量发送
- 消费者并发度优化
- 消息堆积监控与报警
-
总结
- MQ 是架构解耦的重要基石
- RocketMQ 适合高吞吐低延迟的场景
- 幂等 + 异步是后端架构的“必修课”