Half(Prepare) Message: 指暂时不能传递的消息。当消息成功发送到MQ服务器,但服务器没有收到来自生产者的消息的第二个确认,则该消息被标记为“临时不可交付”。此状态中的消息称为半提交消息(Prepare消息)。服务器
Message Status Check: 在网络断开或生产者应用程序从新启动,可能致使丢失第二个确认事务的消息。当MQ服务器发现一条消息长时间保持为半提交消息转态时,它将向消息生产者发送一个请求,检查消息的最终状态(提交或回滚)。网络
RocketMQ的事物执行流程以下图所示: 架构
RocketMQ的事务性消息设计架构总览以下图: 设计
如图所示,为了屏蔽存储的底层实现,全部事务消息操做都集中在事务服务接口上。RocketMQ提供了一个它本身实现的默认存储系,咱们使用事务桥实现事务性存储逻辑,而不是直接修改RocketMQ的存储层。