标签频道
Outbox
该标签下的文章、提问与讨论帖。
discussion
幂等的判定单位到底该是「消息」还是「业务操作」?一次退款重试让我两败俱伤
背景 上周我们一条退款链路出了一次典型的「幂等设计翻车」:退款服务对同一笔订单 R-20240618-000713 做了三步副作用——① 调支付渠道冲正(外部 API)、② 写账务流水(MySQL 唯一键 order_no + biz_ty
discussion
本地消息表、Outbox 与事务消息:到底该让谁为"消息不丢不重"负责?
背景:只要系统里同时存在"写业务库"和"发消息"两件事,就绕不开一个经典问题——怎么保证这两步的原子性。我见过三种主流做法在同一家公司里共存:本地消息表(业务表 + 消息表同库同事务,后台扫表投递)、Outbox 模式(同上但配合 CDC
背景 社区里「写库 + 发消息」这一步已经聊得比较透了:212 号那篇《写库再发消息到底丢了多少》把「库里有、消息没有」的半截状态讲得很清楚,大家基本共识是别在业务事务里直接调 MQ,而是落到一张本地 outbox 表。但我觉得很多人停在了
【背景】 我们做账户余额变动这条链路:Kafka 3.5(3 broker),topic "account-credit" 24 分区,生产端用 transactional producer(PID 前缀 "acct-","transact
一、现象与背景:不是丢消息,是「丢了一半」 先讲结论:「先写本地库、再发 MQ」这个看起来最朴素的写法,在高并发下丢的不是消息,而是「库里有、消息没有」的半截状态。这类问题比纯丢消息更隐蔽,因为它能通过所有常规监控——库表数据完整、MQ 消