首页
/
行业洞察
/
正文
INDUSTRY INSIGHT · 深度
mq有序消息
📅 2026/10/14 15:39:07
✍️ 爱科研究院
👁 阅读 3,247
前言在计费、订单、金融类链路中同一业务实体的消息必须保证消费有序。如果直接使用 RocketMQ 原生重试机制会直接破坏消息顺序造成业务逻辑错乱。本文基于真实计费中台项目讲解有序消息实现原理、为什么不能使用 MQ 自带重试、业务补偿架构、幂等设计也是后端面试高频问题。一、业务背景计费系统中同一个订单会产生多条状态变更消息创建 → 扣费 → 生效 → 结算。消息必须按顺序消费。如果顺序颠倒会出现先结算、后扣费造成资金对账错误。二、为什么有序消息不能使用 MQ 原生重试RocketMQ 消费返回RECONSUME_LATER时消息会投递到重试队列重试消费完成后重新回到原队列尾部。举个例子原有消息顺序msg1、msg2、msg3。msg2 消费失败触发重试消息投递到重试队列再次消费时排在队列末尾消息顺序变成msg1、msg3、msg2。消息彻底乱序计费业务直接出错。核心结论有序消息场景严禁使用 RocketMQ 原生重试。三、最终架构失败不重试业务层补偿1. 消费端核心逻辑收到消息先查询业务状态机做幂等校验如果消息已经处理完成直接 ACK跳过业务逻辑正常执行业务逻辑业务执行成功更新业务状态ACK 消息业务执行失败写入异常任务表直接 ACK 消息不触发 MQ 重试。2. 双层补偿兜底方案定时任务补偿基于 XXL-Job 定时扫描异常任务表调用自研 SAGA 分布式事务框架重新执行计费流程全量对账兜底每日离线对账防止消息丢失、数据库落库异常。3. 有序实现原理业务 Key 哈希投递自定义MessageQueueSelector根据业务订单 ID 做哈希取模。同一业务 Key永远投递到同一个队列消费端使用MessageListenerOrderly单线程串行消费。实现效果同业务 Key 消息有序不同业务 Key 消息并行消费。四、幂等设计重点采用「查询前置拦截 MySQL 联合唯一索引兜底」方案。单纯依靠查询做幂等存在 TOCTOU 检查即使用竞态漏洞并发场景会产生重复数据。联合唯一索引可以拦截并发写入冲突保障最终一致性。多租户场景唯一索引必须带上 tenant_id实现租户之间数据隔离。五、生产踩坑一条消息无限重试会不会阻塞消费顺序消费模式同一个队列单线程消费失败消息持续重试会阻塞该队列后续所有消息其他队列不受影响。普通并发消费只会占用单个消费线程不会全局阻塞但大量重试会耗尽线程池持续冲击下游服务引发雪崩。六、总结有序消息场景禁止 MQ 原生重试重试会破坏消息顺序消费失败直接 ACK 消息通过异常任务表 定时任务做业务补偿业务 Key 哈希投递实现局部有序幂等采用查询前置 数据库唯一索引兜底规避并发重复写入。本文为项目实战总结适合面试复盘欢迎交流。
📌 标签:
工业官网
设计趋势
AI 建站
SEO
获取完整报告 →
RELATED ARTICLES
推荐阅读
2026/10/14 23:55:49
27. 数据产品-数据治理-1.数据治理必要性
2026/10/14 14:13:07
aiogram 编辑 Checklist 消息:EditMessageChecklist 方法深度解析与实践指南
2026/10/14 17:28:28
从源码构建 Deepfence ThreatMapper:本地编译容器镜像、启动管理控制台与镜像发布全指南
2026/10/15 15:06:31
Claude Replay Theater:AI编程编辑行为的可追溯回放系统
2026/10/15 15:06:31
UE5 地形材质 v11 真实感重制复盘:从取证到落地
2026/10/15 15:06:31
企业电子签署技术集成与SaaS平台实践指南
2026/10/15 15:06:31
数据库安全监测技术解析:从行为分析到智能运维
2026/10/15 15:06:31
N4软件虚拟机安装指导:环境配置、授权激活与避坑实践
2026/10/15 15:01:23
MH5000-31 5G模组Windows调试驱动安装排障实战
2026/10/15 0:02:59
AI Coding时代的柔性之美:从静态软件到自演化软件,软件研发正在重新进化
2026/10/15 0:02:59
亨得利客户服务中心官方网点分布一览:2026年全国多城门店地址与最新联系电话公布
2026/10/15 0:02:59
防关联浏览器哪个好?三款产品实测差异解析
2026/10/13 12:25:09
流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南
2026/10/14 18:35:19
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别
2026/10/14 14:52:59
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容
2026/10/15 1:07:55
我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频
2026/10/15 5:07:59
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证
2026/10/15 8:10:01
2026 大模型集体涨价:用 Python 做企业 Token 成本测算与选型避坑(附配置)