4定时任务关闭超时未支付的订单

Posted vwvwvwgwg

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了4定时任务关闭超时未支付的订单相关的知识,希望对你有一定的参考价值。

// 1. 在主启动类上加上支持定时任务的注解
@EnableScheduling
public class Application {
// 2. 编写定时任务
@Component
public class OrderJob {

    @Autowired
    private OrderService orderService;

    /**
     * 使用定时任务关闭超期未支付订单,会存在的弊端:
     * 1. 会有时间差,程序不严谨
     *      10:39下单,11:00检查不足1小时,12:00检查,超过1小时多余39分钟
     * 2. 不支持集群
     *      单机没毛病,使用集群后,就会有多个定时任务
     *      解决方案:只使用一台计算机节点,单独用来运行所有的定时任务
     * 3. 会对数据库全表搜索,及其影响数据库性能:select * from order where orderStatus = 10;
     * 定时任务,仅仅只适用于小型轻量级项目,传统项目
     *
     * 后续课程会涉及到消息队列:MQ-> RabbitMQ, RocketMQ, Kafka, ZeroMQ...
     *      延时任务(队列)
     *      10:12分下单的,未付款(10)状态,11:12分检查,如果当前状态还是10,则直接关闭订单即可
     */

    // @Scheduled(cron = "0/3 * * * * ?")
    // @Scheduled(cron = "0 0 0/1 * * ?")
    public void autoCloseOrder() {
        orderService.closeOrder();
        System.out.println("执行定时任务,当前时间为:"
                + DateUtil.getCurrentDateString(DateUtil.DATETIME_PATTERN));
    }

}

以上是关于4定时任务关闭超时未支付的订单的主要内容,如果未能解决你的问题,请参考以下文章

Java 实现订单未支付超时自动取消

Redis实战(12)-基于Redis的Key失效和定时任务调度实现订单超时未支付自动失效(延时队列)

基于rabbitMQ 消息延时队列方案 模拟电商超时未支付订单处理场景

RabbitMQ如何实现2小时未支付关闭订单?

订单超时未支付自动取消8种实现方案

订单超时未支付自动取消8种实现方案