RocketMQ 事务型消息 + 异步扣减库存实现

RocketMQ 事务型消息

事务型消息为了保证最终一致性(就是本地执行的事务与消费者的消费操作保持原子性)会用到两阶段提交,这里就简单记录下其中的过程。

在这里插入图片描述

图解:生产者(Preducer)、消费者(Consumer)、代理服务器(Broker,因为 Broker 会有 Name Server 来绑定,所以这里就简称MQ Server)和 数据库 MySQL

两阶提交段步骤:

  1. 首先,生产者会发送一个半成品消息给代理(不让消费者去消费),然后代理会给消费者返回一个 OK 。
  2. 本地执行事务,生产者这时就会访问 MySQL 执行一个事务。
  3. 如果本地事务执行成功了,生产者就会告诉代理让消费者可以去消费了;如果本地事务执行失败了,生产者就会告诉代理回滚不让消费者感知到。
  4. 如果上述第三步失败了(即生产者通知代理由于一些原因没通知到),而本地事务执行成功了。这时代理因为只收到了一个半成品消息,却久久没收到通知,它这时就会有一个回查机制自动去核查(每隔一段时间去查一下,并且间隔时间会越来越大)。
  5. 生产者收到代理通知的核查后,它就会去检查数据库刚才的数
  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值