创建订单流程
2022-06-15 16:10:02 4 举报
创建订单流程
作者其他创作
大纲/内容
订单服务监听延迟队列的消息
当前订单状态
校验成功
是
有
向MQ延迟队列发送消息
校验失败
结束
未付款
开始创建订单
创建订单号
创建订单成功
继续呆着
并向MQ延迟队列发送消息
解锁库存服务监听,进行解锁库存操作
是否支付成功?
否
当该订单在库存工作单的状态为已锁定,才开始自动解锁库存
支付
查询该订单的最新工作单详情表的状态
给解锁库存服务的队列发送一条关单成功的消息
解锁失败
将该订单在数据库的工作单详情表的状态修改为已解锁,并且手动确认消费该消息。
库存服务监听延迟队列的消息
返回错误信息给前端
开始远程锁库存
交给释放订单服务、优惠券、积分、是否拆单队列
用户点击提交订单交互按钮请求 /submitOrder接口
库存服务监听延迟队列的消息,查询并对比该订单在数据库的工作单详情表的锁定库存信息
表示库存回滚了,无需解锁。
用户是否主动取消订单?
开始关单
无
校验令牌:对比header与Redis的令牌
解锁成功
有无库存锁定消息?
消息是否过期?
关单是否成功?
如果更新订单的详情表出现异常,应该再使用乐观锁解决
校验价格
避免导致产生订单关闭了但是没有解锁库存的问题
将订单创建的详情持久化到数据库的工作单详情表。
抛出异常,并且MQ手动拒绝将消息重新放回队列
获取:收货地址、备注、应付金额、令牌等信息
0 条评论
下一页