基于rabbitMQ实现分布式事务的基本思路

说明:这里我们以增加订单和扣减库存为例。假设订单表和库存表分别在两个数据库中。

我们要创建一张任务表和一张历史任务表,这两张表可以放在订单数据库中。

一:订单服务
1.生成订单,将订单数据保存到订单表。
2.订单的信息保存在任务表中。
3.编写一个定时任务,定期查询任务表中的所以数据。
4.将查询到的数据逐条发送到待处理库存的rabbitMQ队列。
二:库存服务
5.编写一个监听类监听待处理库存的rabbitMQ队列。拿到消息。
6.判断消息在redis中是否存在。如果存在则该说明正在被处理,直接返回。
7.判断消息在历史任务表中是否存在。如果存在则该说明该消息被处理了,直接返回。
8.经过第6,7步则说明该消息还没有被处理。将消息添加到redis中。
9.扣减库存。
10.删除redis中的信息。
11.将消息发送到库存扣减成功的rabbitMQ队列。
三:订单服务
12.编写一个监听类监听库存扣减成功的rabbitMQ队列。拿到消息。
13.向历史任务表添加数据。
14,删除任务表的数据。

基本思路就这样吧,有点麻烦。条件允许的话推荐使用阿里的Seata框架吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值