事务发件箱(Transactional Outbox)把业务修改与待发送事件写入同一个本地数据库事务,再由独立转发过程发布事件。
解决双写窗口
如果先提交数据库再发消息,进程在两者之间故障会漏发;反过来则可能先发出最终未提交的业务事件。发件箱把“业务已提交”和“需要发送什么”放在同一提交边界。
转发与去重
转发者读取或订阅已提交记录,发布成功后按规则标记进度。发送成功而标记失败仍可能重复,因此消费者需要幂等,转发过程也要处理重试、顺序和积压。
该模式不自动提供全局强一致;它让事件最终可可靠推进,业务仍需定义延迟期间的可见状态和恢复措施。