什么是事务消息
事务消息(Transactional Message)是指应用本地事务和发送消息操作可以被定义到全局事务中,要么同时成功,要么同时失败。RocketMQ的事务消息提供类似 X/Open XA 的分布事务功能,通过事务消息能达到分布式事务的最终一致。
事务消息所对应的场景
在一些对数据一致性有强需求的场景,可以用 Apache RocketMQ 事务消息来解决,从而保证上下游数据的一致性。
以秒杀购物商城的商品下单交易场景为例,用户支付订单这一核心操作的同时会涉及到下游物流发货、库存变更、购物车状态清空等多个子系统的变更。
事务性业务的处理分支包括:
- 主分支订单系统状态更新:由未支付变更为支付成功。
- 调用第三方物流系统状态新增:新增待发货物流记录,创建订单物流记录。
- 积分系统状态变更:变更用户积分,更新用户积分表。
- 购物车系统状态变更:清空购物车,更新用户购物车记录。
RocketMQ的事务消息
Apache RocketMQ在4.3.0版的时候已经支持分布式事务消息,这里RocketMQ采用了2PC的思想来实现了提交事务消息,同时增加