📚 分类
rabbitMq
🕵🏽‍♀️ 问题描述
rabbitMQ消息的重复消费问题如何解决的?
👨‍🏫 问题讲解
❒ 每条消息设置一个唯一的标识id
✔ 生产端:发送消息时,在消息的 headers 或 body 中加入唯一标识(如 UUID、雪花算法 ID、业务单号 + 时间戳)。
✔ 消费端:提取该唯一 ID,通过「数据库唯一索引 / Redis 原子操作」判断是否已处理。

❒ 幂等方案:【分布式锁、数据库锁(悲观锁、乐观锁)】
✔  若消息本身携带业务唯一标识(如订单号、用户 ID + 操作类型),可直接基于业务字段做幂等:
✔  例:更新用户积分(用户 ID + 积分批次号)→ 先查询积分是否已更新,已更新则跳过;
✔  例:创建订单(订单号)→ 订单号作为唯一主键,重复创建会触发主键冲突,直接捕获并忽略。
🏳️‍🌈 问题总结
❒ 解决方案:
✔ 每条消息设置一个唯一递增的版本号
✔ 幂等方案:【分布式锁、数据库锁(悲观锁、乐观锁)】
📖 问题信息
📈 浏览次数:15 | 📅 更新时间:2025-12-17 17:52:52
📦 创建信息
🏷️ ID:69 | 📅 创建时间:2024-11-06 15:01:55