RocketMQ事务消息的理解

RocketMQ事务消息的理解

1.简述:

​ 保证本地事务和发送消息的一致性,不保证后续消费者的一致性。

2.原理:

事务消息采用2PC+事务补偿机制来保证一致性

  • 2PC:提交回滚事务消息

  • 事务补偿机制:处理二阶段超时或者失败的消息,利用了事务回查来检查本地事务的状态,从而判断事务消息是提交还是回滚。

3.事务消息的流程概要

事务消息流程图

  • 提交回滚事务消息

    1.发送half消息

    2.half消息回传ack

    3.MQ Server将消息持久化

    4.执行本地事务,根据本地事务的执行成功与否来决定事务消息的状态(commit、rollback、unkown)

    如果事务消息的状态为commit则让消费者消费消息。rollback则直接丢弃消息。unkown则进入事务补偿

  • 事务补偿

    1.对于没有commit/rollback的消息,MQ Server会向producer发起事务回查请求。默认查询次数:15

    2.producer收到回查请求,检查回查消息对应的状态

    3.根据回查消息状态来重新commit/rollback

4.事务消息的特点
  1. 事务消息在一阶段对用户不可见

    half消息属于一阶段消息,对用户不可见。它会备份原消息的Topic、Queue,改变主题为RMQ_SYS_TRANS_HALF_TOPIC(对外不可见)。RocketMQ会开启一个定时任务,从该Topic中拉取消息进行消费,向producer发送事务回查请求,根据查询到的事务状态来决定是提交还是回滚消息

  2. Commit和Rollback操作以及Op消息的引入

    待整理

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值