Spring Task实现定时任务
介绍
定时任务: 是指在预定的时间间隔或特定时间点自动执行的计算机任务或程序。
业务场景: 像平时使用淘宝时,在进行订单支付的时候,你又在犹豫要不要买,这个订单会有一个剩余支付时间,如果你没在指定时间内进行支付订单,这个订单就会变成已取消状态,这个业务下的订单状态变更就是使用到了定时器这个概念。
在学习定时任务时,首先要学下cron表达式:cron表达式其实是一个字符串,通过cron表达式可以定义任务触发的时间。
构成规则: 分成6或7个域,每个域代表一个含义:秒、分钟、小时、日、月、周、年(可选)
测试例子: 2024年1月26日下午16点整
秒 | 分钟 | 小时 | 日 | 月 | 周 | 年 |
---|---|---|---|---|---|---|
0 | 0 | 16 | 26 | 1 | ? | 2024 |
这只是一个例子,更多详情请看cron官网:https://cron.qqe2.com/
入门案例
实现
第一步:引入依赖
导入Apache POI的maven坐标。
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>${mybatis.spring}</version>
</dependency>
在这个SpringBoot的启动依赖里面就存在了core的依赖
第二步: 在启动类添加注解@EnableScheduling
第三步:自定义定时任务
代码如下:
/**
* 自定义定时任务类
*/
@Component
@Slf4j
public class MyTask {
/**
* 定时任务 每隔5秒触发一次
*/
@Scheduled(cron = "0/5 * * * * ?")
public void executeTask(){
log.info("定时任务开始执行:{}", new Date());
}
}
运行效果
随着服务器的启动,定时任务类就会根据cron表达式,定时执行。
苍穹外卖-订单超时解析
问题分析
业务分析: 这是苍穹外卖进行订单支付时,在一定时间内进行支付,订单状态则会变成已支付;否则则会将订单状态变成已取消。这个业务,则是使用了定时任务进行处理,在每一分钟检查订单,检查那些待支付状态下的订单创建时间是否超过了15min。
处理方法
处理结果
总结
这里就带大家了解了定时任务的概念,还有使用了定时任务框架Spring Task,带大家通过简单案例进行说明,也通过了分析苍穹外卖的订单超时这个业务进行分析,让我们明白了定时任务类的作用跟使用情景。