本地消息表:同库同事务是灵魂
2026/8/22大约 2 分钟
分布式事务系列 · 阶段 4 · 消息一致性 · 第 32/49 篇 · 🚧 占位待学
上一篇:《两种不一致:问题定义与风险地图》
下一篇:《RocketMQ 事务消息:half、回查与全时序》
学习大纲:《分布式事务学习总纲》
状态:待学习。 本文为占位文档:知识点清单、实验与验收标准已就绪,正文待按「先学习、先实验、再撰写」补全。
对应总纲单元:阶段 4A · 单元 4A.2
一、本文要解决的问题
不依赖任何 MQ 特性,怎么保证「业务成功」和「消息必达」原子?先手写本地消息表,才能真懂后面框架帮你做了什么。
二、知识点清单
- 业务表 + outbox 消息表同库同事务插入(原子性的来源)
- 后台扫表补发 + 指数退避 + 已发标记
- 最少一次语义下的消费端幂等要求
- 扫描任务的分页、并发控制与性能影响
三、动手实验(学习时必须真跑)
- 手写本地消息表版「注册成功-发优惠券」:业务与 outbox 同事务写入,后台线程扫描补发
- kill 消费方再重启,验证消息最终送达(券不丢)
四、验收标准(全部通过才进入下一篇)
五、写作提示(补正文时遵守)
- 开篇问题驱动;结构走「是什么 → 为什么 → 怎么做 → 背景知识」
- 所有代码、命令、输出必须先在本机跑通再写入,不得杜撰
- 版本口径以总纲环境清单为准(Apache Seata 2.6.0 / MySQL 8.0 / RocketMQ 5.x / Spring Boot 3.x)
- 涉及版本敏感结论时标注出处与时间
本篇完成后,把文首导航块的「🚧 占位待学」去掉,并在总纲处打卡。