Quartz是一个任务调度框架。比如你遇到这样的问题
• 想每月25号,信用卡自动还款
• 想每年4月1日自己给当年暗恋女神发一封匿名贺卡
• 想每隔1小时,备份一下自己的爱情动作片 学习笔记到云盘
这些问题总结起来就是:在某一个有规律的时间点干某件事。并且时间的触发的条件可以非常复杂(比如每月最后一个工作日的17:50),复杂到需要一个专门的框架来干这个事。 Quartz就是来干这样的事,你给它一个触发条件的定义,它负责到了时间点,触发相应的Job起来干。
第一步:建立一个自定义Job
- 实现org.quartz.Job接口;
- 重写execute执行方法;
1 | public class MyJob implements Job{ |
第二步:建立一个QuartZ启动组件
- 实现CommandLineRunner接口,随应用启动加载,重写run方法;
- 创建Quartz的计划任务;
- 开启job;
- 配置trigger触发器:
这是QuartZ在springboot中最简单的实现,
任务和触发器还可以指定id和分组- 启动Scheduler:
1 |
|
第三步:对已建立Scheduler的操作
- 获取任务(触发器)及状态;
- 暂停任务,暂停触发器;
- 重启任务,重启触发器;
1 |
|
Spring Scheduled(SpringBoot 对定时任务的支持) :
相比QuartZ ,spring scheduled较轻量级,当业务较简单时,推荐用spring scheduled.
@Scheduled注解,可指定固定延迟,或直接用Cron表达式
任务组件
1 |
|
启动类
1 |
|