加载中...

事务性发件箱(Transactional Outbox)是微服务消息可靠性模式,解决"更新数据库并发送消息"的双写问题:若先写库后发消息,消息可能丢;先发消息后写库,库可能回滚。该模式把消息作为一条记录与业务数据写入同一个本地数据库事务中的发件箱(outbox)表。
业务事务提交后,由独立的投递进程把 outbox 表中的消息发布到消息队列:可以轮询表,也可以用 CDC(如 Debezium 读取数据库变更日志)捕获。投递至少一次,消费方需保证幂等。
常用于订单创建后发布领域事件、跨服务数据同步等场景,是 Saga 与事件驱动架构的可靠性基石之一。
优点是不依赖分布式事务即可保证业务与消息的原子性;缺点是引入额外表、投递组件与延迟,需要处理消息去重。

登录 后参与讨论
暂无讨论,来发表第一条评论吧