SpringBoot 2.2.5 整合Xxl-Job,实现各种任务调度
前言:该博客主要携坦是记录自己学习的过程,方便以后查看,当然也希望能够帮到大家。
后记:本次分享到此结束,本人水平有限,难免有错误或遗漏之处,望大家指正和团改谅解,欢迎评论留言塌隐判。
Spring Scheduling -- 任务调度
文档:
Quartz官网:
cron表达式生成器:
Spring Task 对比 Spring Quartz
1、Spring Task默认单线程串行洞春冲执行任务,多任务时若某个任务执行时间过长,后续任务会无法及时执行
2、Quartz采用多线程,下一个调度时间到达时,会另起一个线程执行调度,不会发生阻塞问题,但调度过多时可纳歼能导致数据处理异常
3、Spring Task抛出异常后,同一个任务后续不再触发
4、Spring Quartz抛出异常后,同一个任务后续仍然会触发
1-0、SpringMVC配置:森袜Spring Bean配置
1-1、SpringBoot配置:给主类增加注解 @EnableScheduling
2、定义任务
1、配置Maven依赖
2、Spring Bean配置
层次结构:调度器 - 触发器 - 任务
SpringBoot任务调度
SpringBoot提供了任务调度功能,可以指定启动服务器立刻执行某些任务逻辑,或指定时间调用某些任务逻扮培辑。
SpringBoot提供了 ApplicationRunner 和 CommandLineRunner 接口,实现任何一个即可。
1. ApplicationRunner
2. CommandLineRunner
总结:多个任务可以使用@Order定义调度顺序,从1,2,3,4...;多个任务采用单线程同步模式执行。
如果需要多个任务需要异步执行调用,可以使物凳用 @EnableAsync 和 @Async 标记。
提示:在需要的时机注入MyTask3任务对象,调用run1、run2方法。
在以前经常使用罩缺旅 Quartz 工具来实现任务调度。后期Spring框架引入 Schedule 任务模块,实现了任务调度功能。( Spring+Quartz 、 Spring Schedule )
1. Spring Schedule模块应用
cron表达式( 由7部分构成,格式为“秒 分 时 日 月 星期 年” )
2. Spring Quartz整合应用
编写任务组件
配置JobDetail、CronTrigger、ScheduleFactoryBean组件