当前位置: 首页 > news >正文

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

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

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

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

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

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

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

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

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

3、产品决定临界点支付成功,算下单失败
【1】此时需要退款、更新订单状态(已关闭)、立刻释放库存(更新库存是否释放)

三、订单过期,MQ收到消息处理

1、判断该订单支付状态
【1】已支付:这里不做任何操作(由支付成功回调接口操作)
【2】未支付:更新订单状态(已关闭)、 1 到 2 分钟(库存释放时间 - 订单过期时间)后判断支付状态,如果还是未支付、就释放库存(更新库存是否释放为是)

四、总结

1、开发思维不要仅限于技术,要走出技术的误区

2、开发、产品、业务,往往是相互结合、相辅相成

相关文章:

  • 高阶测试开发必备技能: k8s入门
  • 2022-12-6-Cmake工程转VS环境开发
  • 一个redux使用案例模板
  • [安装] Doris集群搭建环境
  • 汽车电子之功能安全介绍
  • 刷爆力扣之非递减序列
  • GeoGebra 與數學探索 1 GeoGebra 入門到進階之整體介紹
  • 代码随想录算法训练营第五十六天|583. 两个字符串的删除操作、72. 编辑距离
  • 大数据给企业带来了哪些挑战
  • 加载器、反射、xml、DTD、schema、注解、单元测试
  • 计算机毕业设计Java能源控制系统(源代码+数据库+系统+lw文档)
  • 电力系统潮流计算与PowerWorld仿真(牛顿拉夫逊法和高斯赛德尔法)(Matlab实现)
  • OushuDB数据库基本用法(下)
  • CBAP.BABOK.商业分析.业务分析.概述
  • zookeeper四字命令_java培训
  • Pr:导出设置之音频
  • 前端面试前端性能优化篇
  • 计算机毕业设计Java校园资料分享平台(系统+源码+mysql数据库+lw文档)
  • 【DBA100人】Payso张耀辉:学材料专业出身的他转身做了“码农”
  • 数值处理--特征工程
  • 经济的1000+篇文章总结
  • 【数据结构】基础:AVL树(平衡二叉树)
  • 【C++11】lambda表达式、包装器、bind 与 placeholders
  • 【深度学习基础6】自编码器及其变体
  • 数学知识-约数
  • 【Python模块】psutil
  • 配置安全的linux-apache服务器(5)
  • 【栈】数据结构栈的实现
  • BPMP 需求
  • 软件测试(概念Ⅰ) · 软件测试的基本概念 · 什么是需求 · 测试用例的概念 · 软件错误(bug)的概念
  • 2023年重庆高考588分能报什么大学 588分能上哪些院校
  • 2023年山东春季高考考试时间 什么时候考试
  • 单招被调剂可以不去吗 还能高考吗
  • 2023湖南双一流大学名单 湖南哪所学校好
  • 中专考大学要考什么科目 内容有哪些
  • 预计2023国家专项计划录取分数线是多少
  • 2021年浙江工商大学杭州商学院学费是多少 各专业收费标准
  • 神经科学专业课程有哪些
  • 2023软件工程专业课程有哪些 就业方向是什么
  • 现在进行时结构是什么 怎么构成的