知识卡片

Outbox保证交付

普通读书笔记卡 · 1766.f

内容

Outbox把业务数据和待发布消息写入同一本地事务,再异步投递到消息系统。它用唯一消息ID和幂等消费降低重复投递风险,是微服务事件发布的实用折中。

参考来源

- 位置:《复杂软件设计之道》第6章《事件溯源》"6.7 更改数据捕获(CDC)"一节中的Outbox模式部分(源文件:_chapter_text/ch06.txt) - 结论依据:原文明确"Outbox是微服务架构分布式事务的通用模式,它主要是为了在至少一次消息传递模式下保证幂等性,确保数据不重复",并列出Outbox表结构含唯一ID字段("消费者可以使用它检测任何重复事件"),说明其通过本地事务写入+唯一ID去重实现可靠投递。 - 原始内容:当然如果不使用Kafka分发数据,可以使用RabbitMQ等用Outbox(发件箱)模式实现事务化保存到本地数据库。Outbox是微服务架构分布式事务的通用模式,它主要是为了在至少一次消息传递模式下保证幂等性,确保数据不重复。Outbox的表结构一般包含以下字段。●id:每条消息的唯一ID。消费者可以使用它检测任何重复事件,例如在故障后重新启动以读取消息时。