java订单到期自动取消_订单自动过期实现方案

  • Post author:
  • Post category:java


需求分析:

24小时内未支付的订单过期失效。

解决方案

被动设置:在查询订单的时候检查是否过期并设置过期状态。

定时调度:定时器定时查询并过期需要过期的订单。

延时队列:将未支付的订单放入一个延时队列中,依次取出过期订单。

过期提醒:reids支持将一个过期的key(订单号)通知给客户端,根据过期的订单号进行相应的处理。

1. 被动设置

这个太简单了,就是在查询的时候判断是否失效,如果失效了就给他设置失效状态。但是弊端也很明显,每次查询都要对未失效的订单做判断,如果用户不查询,订单就不失效,那么如果有类似统计失效状态个数的功能,将会受到影响,所以只能适用于简单独立的场景。简直low爆了。

2. 定时调度

这种是常见的方法,利用一个定时器,在设置的周期内轮询检查并处理需要过期的订单。

具体实现有基于Timer的,有基于Quartz,还有springboot自带的Scheduler,实现起来比较简单。

就写一下第三个的实现方法吧:

启动类加上注解@EnableScheduling

新建一个定时调度类,方法上加上@Scheduled注解,如下图那么简单。

9b0adbcd5ba95f1bee042ff2a02b3b62.png

弊端

不能够精准的去处理过期订单,轮询



版权声明:本文为weixin_28866737原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。