springboot整合quartz实现动态任务管理
原创
©著作权归作者所有:来自51CTO博客作者wx5add7776993de的原创作品,请联系作者获取转载授权,否则将追究法律责任
一,springboot整合quartz实现动态任务管理
近期在学习quartz,自己也动手用springboot和mybatis整合了quartz,实现对任务的动态开启和暂停,恢复和终止。
自己手动封装了一个相当于工具类的方法吧,通过传入任务名,任务组,还有相关job和cron表达式就可动态获取任务调度器
//StdSchedulerFactory工厂
private static StdSchedulerFactory schedulerFactory = new StdSchedulerFactory();
/**
* 获取一个调度器
* 通过 具体执行的任务器的.class类型,任务组名和任务名,还有cron表达式动态获取该任务的调度器
* @param group
* @param name
* @param clazz
* @param cron
* @return
*/
@Override
public Scheduler startJob(String group,String name,Class clazz,String cron) {
//封装信息
JobDataMap jobDataMap = new JobDataMap();
jobDataMap.put("group",group);
jobDataMap.put("name",name);
//创建jobDetail
JobDetail jobDetail = newJob(clazz)
.usingJobData(jobDataMap)
.build();
//创建cronScheduleBuilder
CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule(cron);
//创建trigger
CronTrigger cronTrigger = (CronTrigger) TriggerBuilder.newTrigger()
.withIdentity(name, group)
.withSchedule(cronScheduleBuilder)
.build();
//创建scheduler
Scheduler scheduler = null;
//配置scheduler,绑定任务和触发器
try {
scheduler = schedulerFactory.getScheduler();
//绑定任务和触发器
scheduler.scheduleJob(jobDetail,cronTrigger);
//配置全局任务监听器
scheduler.getListenerManager().addJobListener(new QuartzListener(),EverythingMatcher.allJobs());
} catch (SchedulerException e) {
e.printStackTrace();
}
return scheduler;
}
开启定时任务
暂停定时任务
JobKey jobKey = new JobKey(name, group);
//暂停任务
TriggerKey triggerKey = new TriggerKey(name, group);
// 停止触发器
scheduler.pauseTrigger(triggerKey);
scheduler.pauseJob(jobKey);
恢复定时任务
= new JobKey(name, group);
//恢复任务
TriggerKey triggerKey = new TriggerKey(name, group);
scheduler.resumeTrigger(triggerKey);
scheduler.resumeJob(jobKey);
终止定时任务
JobKey jobKey = new JobKey(name, group);
TriggerKey triggerKey = new TriggerKey(name, group);
// 停止触发器
scheduler.pauseTrigger(triggerKey);
//移除触发器
scheduler.unscheduleJob(triggerKey);
//终止定时任务
scheduler.deleteJob(jobKey);
更新任务频度(cron)
// 更新定时任务
scheduler.rescheduleJob(triggerKey, trigger);
完整项目地址:
springboot整合quartz实现动态任务管理