-
RocketMQ事务原理
-
总结
一、RocketMQ事务原理
1、消息发送问题分析
为了方便大家理解,我们以日常生活中的订单服务来进行原理的说明。当我们支付订单之后,我们账户的购物积分也会进行相应的积分调整。我们结合下面的订单服务、RocketMQ
、积分服务的简化交互图来看下,如果没有事务消息,这样的服务间交互有没有问题。
可能有的童鞋会说,这不是很简单嘛,肯定是订单服务先执行本地事务,更新订单信息。然后再发消息到MQ中,积分服务消费消息更新积分啊。但是事实上并没有这么简单。
如果我们订单服务直接更新的了订单信息并进行持久化,而后在发送订单信息到MQ
中。如果此时MQ
服务不可用,消息发送报错,无法将订单消息发到MQ
中,也就意味着积分服务不能收到订单信息,也就不会进行相应的积分操作。此时就会出现订单信息与积分信息数据不一致的问题。那么RocketMQ
是怎么解决这个问题的呢?
2、半消息
实际上RocketMQ
提供了一种half
消息的机制,订单服务发送half
消息到MQ
中,这个half
消息是不被消