提交订单
2021-02-24 23:26:22 4 举报
谷粒商城订单服务
作者其他创作
大纲/内容
因为我们可能需要对库存进行解锁,就类似于回滚操作,实现这种功能的方式就是创建日志记录表,记录下我们曾经对库存做了哪些操作,本业务我们创建两张表来实现这样的功能 wms_ware_order_task(工作单):记录订单号、订单id、收货人信息以及物流信息等,当然最重要的就是订单号和订单id ; 另一张表wms_ware_order_task_detail(工作单详情表)存放的就是对应订单号下哪一个skuId在哪个仓库存了多少件了。另外,这张表一个相当重要的字段就是lock_status,即是否已经被解锁。用以避免因为网络问题导致消息的重复消费问题
7.其他操作...
订单超时或取消支付
listener
3.锁定库存
有两种情况会导致分布式事务问题:1.提交订单方法成功。却因为超时未付款或用户取消支付导致需要解锁库存2.提交订单失败,可能原因是锁定库存成功但因为网络问题导致“假失败”或者是扣减积分等后续操作失败导致需要解锁库存
2.创建订单,订单项等信息
5.将工作单详情表记录发送给MQ
30分钟后,订单服务监听到Mq消息
成功下单后发送消息
4.将锁库存信息保存到工作单详情表
发送给Mq,保证取消订单一定被解锁
提交订单
6.扣减积分
1.验证令牌(防止重复提交)
1.保存库存工作单
方法的调用栈
库存系根据订单状态统判断是否需要解锁库存
40分钟后,库存服务监听到Mq消息
RabbitMq
支付成功
更新订单状态并通知库存
3.验价
exchange
2.找到每个商品在哪个仓库都有库存
4.保存订单
订单系统提交订单后便会做一系列事情,这里面就会进行远程调用从而引发分布式事务问题
5.锁定库存
延时队列,发送消息
死信队列,设置过期时间
消息过期删除
锁定库存
调用库存系统
0 条评论
下一页