一.什么是定时任务,使用场景?
- 某个时间定时处理某个任务
- 发邮件、短信等
- 消息提醒
- 订单通知
- 统计报表
- ......
二.常见定时任务
Java⾃带的java.util.Timer类配置比较麻烦,时间延后问题 Quartz框架: 配置更简单,xml或者注解适合分布式或者大型调度作业 SpringBoot框架自带 三.SpringBoot使用注解方式开启定时任务- 启动类里面添加 @EnableScheduling注解开启定时任务,自动扫描
- 定时任务业务类加注解 @Component被容器扫描
- 定时执行的方法加上注解 @Scheduled(fifixedRate=2000) 定期执行⼀次
注解:cron 定时任务表达式 @Scheduled(cron="*/1* * * * *") 表示每秒
crontab ⼯具 https://tool.lu/crontab/
fifixedRate: 定时多久执行⼀次(上⼀次开始执⾏时间点后xx秒再次执行;) fifixedDelay: 上一次执行结束时间点后xx秒再次执行 四.什么是异步任务以及其使用场景? 适⽤于处理log、发送邮件、短信…… 五.SpringBoot使用注解方式开启异步任务 1. 启动类里面使⽤@EnableAsync注解开启功能,自动扫描 2. 定义异步任务类并使⽤@Component标记组件被容器扫描,异步方法加上@Async 注意点:要把异步任务封装到类里面,不能直接写到Controller 增加Future 返回结果 AsyncResult("task执行完成"); 如果需要拿到结果 需要判断全部的 task.isDone()