欢迎光临散文网 会员登陆 & 注册

订单支付超时,自动关闭订单实现

2023-03-16 19:42 作者:Erwin_Feng  | 我要投稿

> 微信公众号:冯文议(ID:fwy-world)


大家好!


今天跟大家一起探讨一个场景:用户对商品下单,约定30分钟没支付,超时订单将被系统自动关闭。


你会如何实现呢?


## 早期方案:扫表


定时任务,每分钟去查询数据库,查询超时没有支付的,就修改订单状态。


![扫表实现](https://images.fengwenyi.com/2023/fe0f039b282940e8aa47d900d531552d.jpg)


思路清晰,实现起来也比较简单,但是遇到的问题也比较多,比如:


1. 每分钟都去查询数据库,数据库的压力比较大。

2. 有一定的延迟。


## 方案升级:消息队列


用户下单成功,就发送到消息队列。时间到了,消费端拿到数据,就查询数据,判断订单状态,如果没有支付,就修改订单状态。


![消息队列实现](https://images.fengwenyi.com/2023/55babdeff14c43ba8f4ddd50eb0bd472.jpg)


目前落地的是采用 RabbitMQ 的延迟队列。用户创建订单成功,就加入到 MQ 的延迟队列,时间到了,就会自动消费,然后关单。


关于 RabbitMQ 延迟队列,可以看这篇文章:[Spring Boot and RabbitMQ 初探](https://mp.weixin.qq.com/s/v-ZuBwd5NMlG6a40sdiVXw) 中关于【延迟队列】部分!


---


好了,今天的分享就到这里了。我是小冯,一名Java程序员,专注于程序设计和开发,如果你在开发上遇到问题,欢迎一起交流,微信公众号:冯文议(ID:fwy-world)。


订单支付超时,自动关闭订单实现的评论 (共 条)

分享到微博请遵守国家法律