QuartzManager

  1 import org.quartz.*;
  2 import org.quartz.impl.StdSchedulerFactory;
  3 import org.quartz.impl.triggers.CronTriggerImpl;
  4 import org.springframework.scheduling.quartz.CronTriggerFactoryBean;
  5 
  6 import java.text.ParseException;
  7 
  8 /**
  9  * Created by liuyu on 2017/8/7.
 10  */
 11 public class QuartzManager {
 12     //private static SchedulerFactoryBean sf = new SchedulerFactoryBean();
 13     private static  Scheduler sched=getScheduler();
 14     private static String JOB_GROUP_NAME = "group1";
 15     private static String TRIGGER_GROUP_NAME = "trigger1";
 16     /**
 17      * 创建一个调度对象
 18      * @return
 19      * @throws SchedulerException
 20      */
 21     private static Scheduler getScheduler() {
 22         SchedulerFactory sf = new StdSchedulerFactory();
 23         Scheduler scheduler=null;
 24         try {
 25             scheduler = sf.getScheduler();
 26         } catch (SchedulerException e) {
 27             e.printStackTrace();
 28         }
 29         return scheduler;
 30     }
 31     /** */
 32     /**
 33      * 添加一个定时任务,使用默认的任务组名,触发器名,触发器组名
 34      *
 35      * @param jobName 任务名
 36      * @param job     任务
 37      * @param time    时间设置,参考quartz说明文档
 38      * @throws SchedulerException
 39      * @throws ParseException
 40      */
 41     public static void addJob(String jobName, Job job, String time)
 42             throws SchedulerException, ParseException {
 43 
 44 
 45         JobDetail jobDetail = JobBuilder.newJob(job.getClass()).withIdentity(jobName, JOB_GROUP_NAME).build();//任务名,任务组,任务执行类
 46         CronTrigger trigger = (CronTrigger) TriggerBuilder.newTrigger().withIdentity(jobName, JOB_GROUP_NAME).withSchedule(CronScheduleBuilder.cronSchedule(time)).forJob(jobDetail).build();
 47 
 48         sched.scheduleJob(jobDetail, trigger);
 49         //启动
 50 //        if (!sched.isShutdown())
 51 //            sched.start();
 52     }
 53 
 54     public static void startAllScheduler() {
 55         try {
 56             if (!sched.isShutdown())
 57                 sched.start();
 58         } catch (SchedulerException e) {
 59             e.printStackTrace();
 60         }
 61     }
 62 
 63     public static void stopAllScheduler() {
 64         try {
 65             sched.shutdown();
 66         } catch (SchedulerException e) {
 67             e.printStackTrace();
 68         }
 69     }
 70     public static void pauseAllScheduler() {
 71         try {
 72             sched.pauseAll();
 73         } catch (SchedulerException e) {
 74             e.printStackTrace();
 75         }
 76     }
 77     public static void resumeAllScheduler() {
 78         try {
 79             sched.resumeAll();
 80         } catch (SchedulerException e) {
 81             e.printStackTrace();
 82         }
 83     }
 84     /** */
 85     /**
 86      * 添加一个定时任务
 87      *
 88      * @param jobName          任务名
 89      * @param jobGroupName     任务组名
 90      * @param triggerName      触发器名
 91      * @param triggerGroupName 触发器组名
 92      * @param job              任务
 93      * @param time             时间设置,参考quartz说明文档
 94      * @throws SchedulerException
 95      * @throws ParseException
 96      */
 97     public static void addJob(String jobName, String jobGroupName,
 98                               String triggerName, String triggerGroupName,
 99                               Job job, String time)
100             throws SchedulerException, ParseException {
101 
102         JobDetail jobDetail = JobBuilder.newJob(job.getClass()).withIdentity(jobName, jobGroupName).build();//任务名,任务组,任务执行类
103         CronTrigger trigger = (CronTrigger) TriggerBuilder.newTrigger().withIdentity(triggerName, triggerGroupName).withSchedule(CronScheduleBuilder.cronSchedule(time)).forJob(jobDetail).build();
104 
105         sched.scheduleJob(jobDetail,trigger);
106 //        if (!sched.isShutdown())
107 //            sched.start();
108     }
109 
110     /** */
111     /**
112      * 修改一个任务的触发时间(使用默认的任务组名,触发器名,触发器组名)
113      *
114      * @param jobName
115      * @param time
116      * @throws SchedulerException
117      * @throws ParseException
118      */
119     public static void modifyJobTime(String jobName, String time)
120             throws SchedulerException, ParseException {
121         TriggerKey triggerKey = TriggerKey.triggerKey(jobName, TRIGGER_GROUP_NAME);
122         Trigger trigger = sched.getTrigger(triggerKey);
123         if (trigger != null) {
124             CronTriggerImpl ct = (CronTriggerImpl) trigger;
125             ct.setCronExpression(time);
126             sched.rescheduleJob(triggerKey, ct);
127         }
128     }
129 
130     /** */
131     /**
132      * 修改一个任务的触发时间
133      *
134      * @param triggerName
135      * @param triggerGroupName
136      * @param time
137      * @throws SchedulerException
138      * @throws ParseException
139      */
140     public static void modifyJobTime(String triggerName, String triggerGroupName,
141                                      String time)
142             throws SchedulerException, ParseException {
143         TriggerKey triggerKey = TriggerKey.triggerKey(triggerName, triggerGroupName);
144         Trigger trigger = sched.getTrigger(triggerKey);
145 
146         if (trigger != null) {
147             CronTriggerImpl ct = (CronTriggerImpl) trigger;
148             ct.setCronExpression(time);
149             //重启触发器
150             sched.rescheduleJob(triggerKey, ct);
151         }
152     }
153 
154     /** */
155     /**
156      * 移除一个任务(使用默认的任务组名,触发器名,触发器组名)
157      *
158      * @param jobName
159      * @throws SchedulerException
160      */
161     public static void removeJob(String jobName)
162             throws SchedulerException {
163         TriggerKey triggerKey = TriggerKey.triggerKey(jobName, TRIGGER_GROUP_NAME);
164         sched.pauseTrigger(triggerKey);//停止触发器
165         sched.unscheduleJob(triggerKey);//移除触发器
166         sched.deleteJob(JobKey.jobKey(jobName, TRIGGER_GROUP_NAME));//删除任务
167     }
168 
169     /** */
170     /**
171      * 移除一个任务
172      *
173      * @param jobName
174      * @param jobGroupName
175      * @param triggerName
176      * @param triggerGroupName
177      * @throws SchedulerException
178      */
179     public static void removeJob(String jobName, String jobGroupName,
180                                  String triggerName, String triggerGroupName)
181             throws SchedulerException {
182         TriggerKey triggerKey = TriggerKey.triggerKey(triggerName, triggerGroupName);
183         sched.pauseTrigger(triggerKey);//停止触发器
184         sched.unscheduleJob(triggerKey);//移除触发器
185         sched.deleteJob(JobKey.jobKey(triggerName, triggerGroupName));//删除任务
186     }
187 }
View Code

 

posted @ 2017-08-09 12:22  AlanCoder  阅读(649)  评论(0)    收藏  举报
View Code