1.SpringBoot2.X定时任务schedule讲解
- 什么是定时任务,使⽤场景
某个时间定时处理某个任务
发邮件、短信等
消息提醒
订单通知
统计报表系统 - 常⻅定时任务
Java⾃带的java.util.Timer类配置⽐较麻烦,时间延后问题
Quartz框架: 配置更简单,xml或者注解适合分布式或者⼤型调度作业
SpringBoot框架⾃带 - SpringBoot使⽤注解⽅式开启定时任务
启动类⾥⾯ @EnableScheduling开启定时任务,⾃动扫描
定时任务业务类 加注解 @Component被容器扫描
定时执⾏的⽅法加上注解 @Scheduled(fixedRate=2000) 定期执⾏⼀次
2. SpringBoot2.X多种定时任务配置
-
cron 定时任务表达式 @Scheduled(cron="*/1 * * * * *") 表示每秒
-
crontab ⼯具 https://tool.lu/crontab/
-
fixedRate: 定时多久执⾏⼀次(上⼀次开始执⾏时间点后xx秒再次执⾏;)
-
fixedDelay: 上⼀次执⾏结束时间点后xx秒再次执⾏
3.SpringBoot2.x异步任务EnableAsync实战
- 什么是异步任务和使⽤场景:适⽤于处理log、发送邮件、短信……等
下单接⼝->查库存 1000
余额校验 1500
⻛控⽤户1000 - 启动类⾥⾯使⽤@EnableAsync注解开启功能,⾃动扫描
- 定义异步任务类并使⽤@Component标记组件被容器扫描,异步⽅法加上@Async
4.SpringBoot2.x异步任务Future
- 定义异步任务类需要获取结果
- 要把异步任务封装到类⾥⾯,不能直接写到Controller
- 增加Future 返回结果 AsyncResult(“task执⾏完成”)
- 如果需要拿到结果 需要判断全部的 task.isDone()