RocketMQ生产05:消息重复处理 - 幂等性设计的最佳实践

引言:重复消费的困扰 数据库里同一笔订单被创建了 3 次,库存被重复扣减,用户投诉"明明只买了 1 件,为什么扣了 3 件库存?" 重复消费的常见表现: ❌ 订单重复创建 ❌ 积分重复发放 ❌ 库存重复扣减 ❌ 消息重复推送 本文目标: ✅ 理解消息重复的根本原因 ✅ 掌握幂等性设计的核心方法 ✅ 学习 5 种幂等性实现方案 ✅ 构建完整的防重体系 一、消息重复的根本原因 1.1 RocketMQ 的 At Least Once 语义 RocketMQ 保证消息至少投递一次(At Least Once),但不保证恰好一次(Exactly Once)。 为什么会重复? ┌─────────┐ ┌─────────┐ ┌──────────┐ │Producer │ │ Broker │ │ Consumer │ └────┬────┘ └────┬────┘ └────┬─────┘ │ │ │ │ 1. 发送消息 │ │ ├──────────────────>│ │ │ │ │ │ 2. 存储成功 │ │ │<──────────────────┤ │ │ │ │ │ │ 3. 推送消息 │ │ ├──────────────────>│ │ │ │ │ │ 4. 消费成功 │ │ │<──────────────────┤ │ │ │ │ │ 5. ACK确认 │ │ │<──X─────────────X─┤ 网络故障,ACK 丢失 │ │ │ │ │ 6. 超时重推 │ │ ├──────────────────>│ 重复消费! │ │ │ 重复的三大场景: ...

2025-11-15 · maneng

如约数科科技工作室

浙ICP备2025203501号

👀 本站总访问量 ...| 👤 访客数 ...| 📅 今日访问 ...