Outbox:本地消息与幂等消费

Outbox把业务变更与事件写入同一本地事务,relay/CDC再投递。。

Outbox把业务变更与事件写入同一本地事务,relay/CDC再投递。relay在发送成功但标记前崩溃会重复投递;消费者需让inbox去重记录与业务变更同事务提交。保证依赖持久化和持续重试,不是跨系统exactly-once;外部扣款等副作用仍需幂等键。本例用轮询relay,不等同于Debezium CDC实现。

主要特点

  • Outbox把业务变更与事件写入同一本地事务,relay/CDC再投递。relay在发送成功但标记前崩溃会重复投递;消费者需让inbox去重记录与业务变更同事务提交。保证依赖持久化和持续重试,不是跨系统exactly-once;外部扣款等副作用仍需幂等键。本例用轮询relay,不等同于Debezium CDC实现。

如何使用Outbox:本地消息与幂等消费

  1. 当前是就绪画面。开始演示会按当前参数执行一次操作;回放准备过程请从头播放。
  2. 每次操作独立一轮。从头播放重播本轮,当前继续从所选步骤接着播;步骤菜单与时间轴可定位,历史菜单可回看上一轮。
  3. 方向键 ← → 可单步,空格键播放或暂停。

数据与隐私

所有计算都在你的浏览器里完成,不连接任何数据库,也不会把你输入的内容上传到任何地方。

相关工具

  • 计算机原理可视化 - 原「数据结构可视化」。36个可交互场景:数据结构、Java集合与JVM/GC/线程池、MySQL索引/MVCC/执行恢复、TCP/UDP、分布式事务;逐步字幕、慢速播放和面试讲解。

查看像素鸭AI全部在线工具

可对照的关键步骤(随参数进入不同分支)

BEGIN;
UPDATE account SET balance=balance-10 WHERE id=1;
INSERT INTO outbox(event_id, payload) VALUES ('event-1', ...);
COMMIT;
-- Consumer: inbox unique key + business update in ONE transaction.

官方实现与参考

正在把工具准备好

马上就好,请稍等一下…