RabbitMQ实现订单超时设计思路、以及在订单过期临界点支付成功如何处理

本文介绍了使用RabbitMQ的延时队列实现订单超时自动关闭的设计,包括订单状态、支付状态和库存管理。讨论了用户在订单即将过期时支付成功的情况,提出两种处理方案,并强调开发需关注业务与技术的结合。
摘要由CSDN通过智能技术生成

场景:
我们知道用 RabbitMQ 的延时队列可以实现用户下单后在 xxx 时间内未支付,需要自动关闭订单。但如果用户在订单即将过期的最后一秒支付成功、那么这笔订单算不算正常下单?要不要释放库存?

一、下单未支付超时自动关闭订单设计思路

1、以 30分钟 为例,订单表必须的字段

订单状态、订单支付状态、订单过期时间、库存是否释放、库存释放时间

【1】订单状态:已下单、待出库、运输中、派送中、已取消、已关闭等
【2】订单支付状态:已支付、未支付
【3】订单过期时间:此字段可返回给前端,用于倒计时的起点。取值为用户下单时候订单信息落库时间+30分钟,下单接口可使用异步线程同时把订单信息落库、丢入消息队列
【4】库存是否释放:是、否
【5】库存释放时间:此字段要晚于订单过期时间 1 到 2 分钟,避免订单过期后库存立刻释放而被其他订单冻结,用于临界点支付成功的缓冲时间 

二、用户在订单即将超时的最后一秒支付成功,这笔订单如何处理?

1、此问题需要开发和产品业务沟通,由产品决定算下单成功还是关闭订单

2、产品决定临界点支付成功,算正常下单成功
【1】更新订单状态(出库中)、扣减库存

3、产品决定临界点支付成功,算下单失败
【1】此时需要退款、更新订

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值