课时八十五、 Spring Boot 2.0 quartz:任务动态管理-添加
在前面我们讲到了任务的持久化了,但是在实际项目中,我们的PD还是会提出更高的需求
一、需求分析
那么任务动态管理都包括哪些呢?
(1)动态添加任务:在应用程序运行的过程中,动态的添加一个定时任务(无需重启应用)
(2)动态删除任务:在应用程序运行的过程中,动态的删除一个定时任务
(3)动态修改任务:在应用程序运行的过程中,动态的修改一个定时任务,这里的修改主要是修改定时任务的时间
(4)动态关闭所有任务:在应用程序运行的过程中,动态的关闭所有定时任务,也就是当前正在运行的定时任务统统停掉
(5)动态启动所有任务:在应用程序运行的过程中,动态的启动所有定时任务,也就是把所有暂停的定时任务都启动起来
二、编码思路
(1)触发器如何构建:使用TriggerBuilder就可以构建触发器
(2)任务如何定义:使用JobBuilder就可以定义job
(3)定时任务谁管理:这是由定时任务调度器Scheduler进行管理的
(4)定时任务调度器谁管理:由于这里我们使用了Spring集成了Quartz,所以这里的Scheduler是由SchedulerFactoryBean进行管理的
三、代码实现
/**
* 动态添加任务.
* @param jobName : 任务的名称;
* @param jobGroupName 任务的组名称;
* @param triggerName : 触发器名称
* @param triggerGroupName : 触发器组名称
* @param jobClass : job实现类.
* @param cronExpression : 定时任务表达式
* @return date -- 此定时任务第一次触发的时间.
*/public Date addJob(String jobName,String jobGroupName,String triggerName,String triggerGroupName,Class jobClass,String cronExpression) {
/*
* 1/ 需要获取到任务调度器Scheduler
* 2/定义jobDetail;
* 3/定义trigger;
* 4/使用Scheduler添加任务;
*/
//* 1/ 需要获取到任务调度器Scheduler
Scheduler scheduler = schedulerFactoryBean.getScheduler();
// * 2/定义jobDetail;
JobDetai