| | |
| | | package com.yeshi.fanli.job;
|
| | |
|
| | | import org.quartz.CronScheduleBuilder;
|
| | | import org.quartz.CronTrigger;
|
| | | import org.quartz.Job;
|
| | | import org.quartz.JobBuilder;
|
| | | import org.quartz.JobDetail;
|
| | | import org.quartz.JobKey;
|
| | | import org.quartz.Scheduler;
|
| | | import org.quartz.TriggerBuilder;
|
| | | import org.quartz.TriggerKey;
|
| | | import org.springframework.stereotype.Component;
|
| | |
|
| | | import com.yeshi.fanli.log.LogHelper;
|
| | |
|
| | | @Component
|
| | | public class QuartzManager {
|
| | | |
| | | private static String JOB_GROUP_NAME = "EXTJWEB_JOBGROUP_NAME";
|
| | | private static String TRIGGER_GROUP_NAME = "EXTJWEB_TRIGGERGROUP_NAME";
|
| | |
|
| | | /**
|
| | | * 创建任务:使用默认 任务组、定时组名
|
| | | * @param sched
|
| | | * @param jobName
|
| | | * @param time
|
| | | * @param params
|
| | | * @param cls
|
| | | */
|
| | | public static void addJob(Scheduler sched, Class <? extends Job> jobClass, String jobName, |
| | | String time, Object obj) {
|
| | | try {
|
| | | |
| | | TriggerKey triggerKey = TriggerKey.triggerKey(jobName, TRIGGER_GROUP_NAME);
|
| | | CronTrigger trigger = (CronTrigger) sched.getTrigger(triggerKey);
|
| | | |
| | | if (trigger == null) {
|
| | | LogHelper.test("------addJob---任务创建-----" + jobName + "------- ");
|
| | | JobDetail jobDetail = JobBuilder.newJob(jobClass).withIdentity(jobName, JOB_GROUP_NAME).build();
|
| | | if (obj != null) {
|
| | | jobDetail.getJobDataMap().put("key", obj);
|
| | | }
|
| | | CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(time);
|
| | | trigger = TriggerBuilder.newTrigger().withIdentity(jobName, TRIGGER_GROUP_NAME)
|
| | | .withSchedule(scheduleBuilder).build();
|
| | | sched.scheduleJob(jobDetail, trigger);
|
| | | }
|
| | | |
| | | } catch (Exception e) {
|
| | | throw new RuntimeException(e);
|
| | | }
|
| | | }
|
| | |
|
| | | |
| | | |
| | |
|
| | | /**
|
| | | * 修改任务
|
| | | * |
| | | * @param sched
|
| | | * @param jobName
|
| | | * @param jobGroupName
|
| | | * @param triggerName
|
| | | * @param triggerGroupName
|
| | | * @param time
|
| | | * @param params
|
| | | * @param cls
|
| | | */
|
| | | public static void modifyJob(Scheduler sched, Class <? extends Job> jobClass, String jobName, |
| | | String time, Object obj) {
|
| | | try {
|
| | | LogHelper.test("------modifyJob---任务修改-----" + jobName + "------- ");
|
| | | TriggerKey triggerKey = TriggerKey.triggerKey(jobName, TRIGGER_GROUP_NAME);
|
| | | CronTrigger trigger = (CronTrigger) sched.getTrigger(triggerKey);
|
| | | |
| | | if (trigger == null)
|
| | | return;
|
| | | |
| | | // 删除原任务
|
| | | removeJob(sched, jobName);
|
| | | // 新建任务
|
| | | addJob(sched, jobClass, jobName, time, obj);
|
| | | } catch (Exception e) {
|
| | | e.printStackTrace();
|
| | | throw new RuntimeException(e);
|
| | | }
|
| | | }
|
| | | |
| | | |
| | |
|
| | | /**
|
| | | * @Description: 修改一个任务的触发时间
|
| | | * |
| | | * @param sched
|
| | | * 调度器 *
|
| | | * @param sched
|
| | | * 调度器
|
| | | * @param triggerName
|
| | | * @param triggerGroupName
|
| | | * @param time
|
| | | * |
| | | * @Title: QuartzManager.java
|
| | | */
|
| | | public static void modifyJobTime(Scheduler sched, String triggerName, String triggerGroupName, String time) {
|
| | | try {
|
| | | TriggerKey triggerKey = TriggerKey.triggerKey(triggerName, triggerGroupName);
|
| | | CronTrigger trigger = (CronTrigger) sched.getTrigger(triggerKey);
|
| | | if (trigger == null) {
|
| | | return;
|
| | | }
|
| | | // Trigger已存在,那么更新相应的定时设置
|
| | | CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(time);
|
| | |
|
| | | // 按新的cronExpression表达式重新构建trigger
|
| | | trigger = trigger.getTriggerBuilder().withIdentity(triggerKey).withSchedule(scheduleBuilder).build();
|
| | |
|
| | | // 按新的trigger重新设置job执行
|
| | | sched.rescheduleJob(triggerKey, trigger);
|
| | | } catch (Exception e) {
|
| | | throw new RuntimeException(e);
|
| | | }
|
| | | }
|
| | |
|
| | |
|
| | | /**
|
| | | * @Description: 移除一个任务
|
| | | * |
| | | * @param sched
|
| | | * 调度器
|
| | | * @param jobName
|
| | | * @param jobGroupName
|
| | | * @param triggerName
|
| | | * @param triggerGroupName
|
| | | * |
| | | * @Title: QuartzManager.java
|
| | | */
|
| | | public static void removeJob(Scheduler sched, String jobName) {
|
| | | try {
|
| | |
|
| | | LogHelper.test("------modifyJob---任务删除-----" + jobName + "------- ");
|
| | |
|
| | |
|
| | | JobKey jobKey = new JobKey(jobName, JOB_GROUP_NAME);
|
| | | sched.pauseJob(jobKey);
|
| | | |
| | | TriggerKey triggerKey = TriggerKey.triggerKey(jobName, TRIGGER_GROUP_NAME);
|
| | | |
| | | sched.pauseTrigger(triggerKey); // 停止触发器
|
| | | sched.unscheduleJob(triggerKey);// 移除触发器 |
| | | |
| | | sched.pauseJob(jobKey); // 停止任务
|
| | | sched.deleteJob(jobKey);// 删除任务
|
| | | |
| | | } catch (Exception e) {
|
| | | throw new RuntimeException(e);
|
| | | }
|
| | | }
|
| | |
|
| | | /**
|
| | | * @Description:启动所有定时任务
|
| | | * |
| | | * @param sched
|
| | | * 调度器
|
| | | * |
| | | * @Title: QuartzManager.java
|
| | | */
|
| | | public static void startJobs(Scheduler sched) {
|
| | | try {
|
| | | sched.start();
|
| | | } catch (Exception e) {
|
| | | e.printStackTrace();
|
| | | throw new RuntimeException(e);
|
| | | }
|
| | | }
|
| | |
|
| | | /**
|
| | | * @Description:关闭所有定时任务
|
| | | * |
| | | * |
| | | * @param sched
|
| | | * 调度器
|
| | | * |
| | | * |
| | | * @Title: QuartzManager.java
|
| | | */
|
| | | public static void shutdownJobs(Scheduler sched) {
|
| | | try {
|
| | | if (!sched.isShutdown()) {
|
| | | sched.shutdown();
|
| | | }
|
| | | } catch (Exception e) {
|
| | | throw new RuntimeException(e);
|
| | | }
|
| | | }
|
| | |
|
| | | }
|
| | | package com.yeshi.fanli.job; |
| | | |
| | | import org.quartz.CronScheduleBuilder; |
| | | import org.quartz.CronTrigger; |
| | | import org.quartz.Job; |
| | | import org.quartz.JobBuilder; |
| | | import org.quartz.JobDetail; |
| | | import org.quartz.JobKey; |
| | | import org.quartz.Scheduler; |
| | | import org.quartz.TriggerBuilder; |
| | | import org.quartz.TriggerKey; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import com.yeshi.fanli.log.LogHelper; |
| | | |
| | | @Component |
| | | public class QuartzManager { |
| | | |
| | | private static String JOB_GROUP_NAME = "EXTJWEB_JOBGROUP_NAME"; |
| | | private static String TRIGGER_GROUP_NAME = "EXTJWEB_TRIGGERGROUP_NAME"; |
| | | |
| | | /** |
| | | * 创建任务:使用默认 任务组、定时组名 |
| | | * @param sched |
| | | * @param jobName |
| | | * @param time |
| | | * @param params |
| | | * @param cls |
| | | */ |
| | | public static void addJob(Scheduler sched, Class <? extends Job> jobClass, String jobName, |
| | | String time, Object obj) { |
| | | try { |
| | | |
| | | TriggerKey triggerKey = TriggerKey.triggerKey(jobName, TRIGGER_GROUP_NAME); |
| | | CronTrigger trigger = (CronTrigger) sched.getTrigger(triggerKey); |
| | | |
| | | if (trigger == null) { |
| | | LogHelper.test("------addJob---任务创建-----" + jobName + "------- "); |
| | | JobDetail jobDetail = JobBuilder.newJob(jobClass).withIdentity(jobName, JOB_GROUP_NAME).build(); |
| | | if (obj != null) { |
| | | jobDetail.getJobDataMap().put("key", obj); |
| | | } |
| | | CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(time); |
| | | trigger = TriggerBuilder.newTrigger().withIdentity(jobName, TRIGGER_GROUP_NAME) |
| | | .withSchedule(scheduleBuilder).build(); |
| | | sched.scheduleJob(jobDetail, trigger); |
| | | } |
| | | |
| | | } catch (Exception e) { |
| | | throw new RuntimeException(e); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | /** |
| | | * 修改任务 |
| | | * |
| | | * @param sched |
| | | * @param jobName |
| | | * @param jobGroupName |
| | | * @param triggerName |
| | | * @param triggerGroupName |
| | | * @param time |
| | | * @param params |
| | | * @param cls |
| | | */ |
| | | public static void modifyJob(Scheduler sched, Class <? extends Job> jobClass, String jobName, |
| | | String time, Object obj) { |
| | | try { |
| | | LogHelper.test("------modifyJob---任务修改-----" + jobName + "------- "); |
| | | TriggerKey triggerKey = TriggerKey.triggerKey(jobName, TRIGGER_GROUP_NAME); |
| | | CronTrigger trigger = (CronTrigger) sched.getTrigger(triggerKey); |
| | | |
| | | if (trigger == null) |
| | | return; |
| | | |
| | | // 删除原任务 |
| | | removeJob(sched, jobName); |
| | | // 新建任务 |
| | | addJob(sched, jobClass, jobName, time, obj); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | throw new RuntimeException(e); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * @Description: 修改一个任务的触发时间 |
| | | * |
| | | * @param sched |
| | | * 调度器 * |
| | | * @param sched |
| | | * 调度器 |
| | | * @param triggerName |
| | | * @param triggerGroupName |
| | | * @param time |
| | | * |
| | | * @Title: QuartzManager.java |
| | | */ |
| | | public static void modifyJobTime(Scheduler sched, String triggerName, String triggerGroupName, String time) { |
| | | try { |
| | | TriggerKey triggerKey = TriggerKey.triggerKey(triggerName, triggerGroupName); |
| | | CronTrigger trigger = (CronTrigger) sched.getTrigger(triggerKey); |
| | | if (trigger == null) { |
| | | return; |
| | | } |
| | | // Trigger已存在,那么更新相应的定时设置 |
| | | CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(time); |
| | | |
| | | // 按新的cronExpression表达式重新构建trigger |
| | | trigger = trigger.getTriggerBuilder().withIdentity(triggerKey).withSchedule(scheduleBuilder).build(); |
| | | |
| | | // 按新的trigger重新设置job执行 |
| | | sched.rescheduleJob(triggerKey, trigger); |
| | | } catch (Exception e) { |
| | | throw new RuntimeException(e); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * @Description: 移除一个任务 |
| | | * |
| | | * @param sched |
| | | * 调度器 |
| | | * @param jobName |
| | | * @param jobGroupName |
| | | * @param triggerName |
| | | * @param triggerGroupName |
| | | * |
| | | * @Title: QuartzManager.java |
| | | */ |
| | | public static void removeJob(Scheduler sched, String jobName) { |
| | | try { |
| | | |
| | | LogHelper.test("------modifyJob---任务删除-----" + jobName + "------- "); |
| | | |
| | | |
| | | JobKey jobKey = new JobKey(jobName, JOB_GROUP_NAME); |
| | | sched.pauseJob(jobKey); |
| | | |
| | | TriggerKey triggerKey = TriggerKey.triggerKey(jobName, TRIGGER_GROUP_NAME); |
| | | |
| | | sched.pauseTrigger(triggerKey); // 停止触发器 |
| | | sched.unscheduleJob(triggerKey);// 移除触发器 |
| | | |
| | | sched.pauseJob(jobKey); // 停止任务 |
| | | sched.deleteJob(jobKey);// 删除任务 |
| | | |
| | | } catch (Exception e) { |
| | | throw new RuntimeException(e); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * @Description:启动所有定时任务 |
| | | * |
| | | * @param sched |
| | | * 调度器 |
| | | * |
| | | * @Title: QuartzManager.java |
| | | */ |
| | | public static void startJobs(Scheduler sched) { |
| | | try { |
| | | sched.start(); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | throw new RuntimeException(e); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * @Description:关闭所有定时任务 |
| | | * |
| | | * |
| | | * @param sched |
| | | * 调度器 |
| | | * |
| | | * |
| | | * @Title: QuartzManager.java |
| | | */ |
| | | public static void shutdownJobs(Scheduler sched) { |
| | | try { |
| | | if (!sched.isShutdown()) { |
| | | sched.shutdown(); |
| | | } |
| | | } catch (Exception e) { |
| | | throw new RuntimeException(e); |
| | | } |
| | | } |
| | | |
| | | } |