spring boot 集成Quartz 动态管理定时任务
简介
Quartz 是一款强大的任务调度器,可以实现较为复杂的调度功能,并且支持集群。
spring boot项目中集成Quartz
1.添加maven依赖
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.1</version>
</dependency>
2.创建 Quartz配置类,并将job实例化工厂指定为自定义的MyJobFactory
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200601165626563.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwNDY0MzM0,size_16,color_FFFFFF,t_70#pic_center)
3.将job bean加入spring 管理之中,重写JobFactory
![在这里插入图片描述](https://img-blog.csdnimg.cn/2020060116592369.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwNDY0MzM0,size_16,color_FFFFFF,t_70#pic_center)
4.创建任务调度,实现定时业务处理
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200601170144619.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwNDY0MzM0,size_16,color_FFFFFF,t_70#pic_center)
5.创建任务调度工具类
private static Scheduler scheduler;
/**
* 初始化scheduler
*/
public static void initScheduler() {
if (scheduler == null) {
try {
scheduler = (new StdSchedulerFactory()).getScheduler();
} catch (SchedulerException var1) {
var1.printStackTrace();
}
}
}
/**
* 开始任务调度
* @throws SchedulerException
*/
public static void startJob() throws SchedulerException {
Trigger trigger = TriggerBuilder.newTrigger().withIdentity("key1","valu1").withSchedule(CronScheduleBuilder.cronSchedule("0/5 * * * * ?")).build();
JobDetail jobDetail = JobBuilder.newJob(TestJob.class).build();
if(!scheduler.isStarted()){
scheduler.start();
}
scheduler.scheduleJob(jobDetail,trigger);
}
/**
* 停止任务调度
* @throws SchedulerException
*/
public static void stopJob() throws SchedulerException {
TriggerKey triggerKey = TriggerKey.triggerKey("key1","valu1");
scheduler.pauseTrigger(triggerKey);
scheduler.unscheduleJob(triggerKey);
}
6.创建接口,前端通过接口启动定时任务
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200601170925929.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwNDY0MzM0,size_16,color_FFFFFF,t_70#pic_center)
spring boot启动类中添加@EnableScheduling注解![在这里插入图片描述](https://img-blog.csdnimg.cn/20200601171652618.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwNDY0MzM0,size_16,color_FFFFFF,t_70)