为了账号安全,请及时绑定邮箱和手机立即绑定

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

标签:
Java

大家好!

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

你会如何实现呢?

早期方案:扫表

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

扫表实现

扫表实现

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

  1. 每分钟都去查询数据库,数据库的压力比较大。
  2. 有一定的延迟。

方案升级:消息队列

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

消息队列实现

消息队列实现

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

点击查看更多内容
1人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
JAVA开发工程师
手记
粉丝
1.4万
获赞与收藏
707

关注作者,订阅最新文章

阅读免费教程

感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消