Quartz的任务的临时启动和暂停和恢复
在项目中需要手动启停某些服务,那么需要有一个控制这些任务的类。由于任务是有Quartz控制的,我们只需要通过Quartz的相关的API实现相关的功能即可。
001 | package com.gbsoft.rpt.qtz; |
003 | import java.util.Date; |
004 | import java.util.List; |
007 | import org.quartz.JobDataMap; |
008 | import org.quartz.JobDetail; |
009 | import org.quartz.JobKey; |
010 | import org.quartz.Scheduler; |
011 | import org.quartz.SchedulerException; |
012 | import org.quartz.SchedulerFactory; |
013 | import org.quartz.Trigger; |
014 | import org.quartz.TriggerKey; |
015 | import org.quartz.impl.StdSchedulerFactory; |
016 | import org.quartz.impl.matchers.GroupMatcher; |
023 | public class QuartzSchedule { |
024 | private static Scheduler scheduler=getScheduler(); |
028 | * @throws SchedulerException |
030 | private static Scheduler getScheduler() { |
031 | SchedulerFactory sf = new StdSchedulerFactory(); |
032 | Scheduler scheduler= null ; |
034 | scheduler = sf.getScheduler(); |
035 | } catch (SchedulerException e) { |
040 | public static Scheduler getInstanceScheduler(){ |
046 | * @throws SchedulerException |
048 | public void start() throws SchedulerException |
056 | * @throws SchedulerException |
058 | public boolean isStarted() throws SchedulerException |
060 | return scheduler.isStarted(); |
065 | * @throws SchedulerException |
067 | public void shutdown() throws SchedulerException { |
068 | scheduler.shutdown(); |
075 | * @throws SchedulerException |
077 | public Date scheduleJob(JobDetail jobdetail, Trigger trigger) |
078 | throws SchedulerException{ |
079 | return scheduler.scheduleJob(jobdetail, trigger); |
085 | * @throws SchedulerException |
087 | public Date scheduleJob(Trigger trigger) throws SchedulerException{ |
088 | return scheduler.scheduleJob(trigger); |
092 | * @param triggersAndJobs |
094 | * @throws SchedulerException |
096 | public void scheduleJobs(Map<JobDetail, List<Trigger>> triggersAndJobs, boolean replace) throws SchedulerException |
098 | scheduler.scheduleJobs(triggersAndJobs, replace); |
104 | * @throws SchedulerException |
106 | public boolean unscheduleJob(TriggerKey triggerkey) |
107 | throws SchedulerException{ |
108 | return scheduler.unscheduleJob(triggerkey); |
115 | * @throws SchedulerException |
117 | public boolean unscheduleJobs(List<TriggerKey> triggerKeylist) throws SchedulerException{ |
118 | return scheduler.unscheduleJobs(triggerKeylist); |
125 | * @throws SchedulerException |
127 | public Date rescheduleJob(TriggerKey triggerkey, Trigger trigger) |
128 | throws SchedulerException{ |
129 | return scheduler.rescheduleJob(triggerkey, trigger); |
135 | * @throws SchedulerException |
137 | public void addJob(JobDetail jobdetail, boolean flag) |
138 | throws SchedulerException { |
139 | scheduler.addJob(jobdetail, flag); |
146 | * @throws SchedulerException |
148 | public boolean deleteJob(JobKey jobkey) throws SchedulerException{ |
149 | return scheduler.deleteJob(jobkey); |
156 | * @throws SchedulerException |
158 | public boolean deleteJobs(List<JobKey> jobKeys) |
159 | throws SchedulerException{ |
160 | return scheduler.deleteJobs(jobKeys); |
165 | * @throws SchedulerException |
167 | public void triggerJob(JobKey jobkey) throws SchedulerException { |
168 | scheduler.triggerJob(jobkey); |
174 | * @throws SchedulerException |
176 | public void triggerJob(JobKey jobkey, JobDataMap jobdatamap) |
177 | throws SchedulerException { |
178 | scheduler.triggerJob(jobkey, jobdatamap); |
183 | * @throws SchedulerException |
185 | public void pauseJob(JobKey jobkey) throws SchedulerException { |
186 | scheduler.pauseJob(jobkey); |
190 | * @param groupmatcher |
191 | * @throws SchedulerException |
193 | public void pauseJobs(GroupMatcher<JobKey> groupmatcher) |
194 | throws SchedulerException { |
195 | scheduler.pauseJobs(groupmatcher); |
200 | * @throws SchedulerException |
202 | public void pauseTrigger(TriggerKey triggerkey) |
203 | throws SchedulerException { |
204 | scheduler.pauseTrigger(triggerkey); |
207 | public void pauseTriggers(GroupMatcher<TriggerKey> groupmatcher) |
208 | throws SchedulerException { |
209 | scheduler.pauseTriggers(groupmatcher); |
214 | * @throws SchedulerException |
216 | public void resumeJob(JobKey jobkey) throws SchedulerException { |
217 | scheduler.pauseJob(jobkey); |
220 | public void resumeJobs(GroupMatcher<JobKey> matcher) |
221 | throws SchedulerException { |
222 | scheduler.resumeJobs(matcher); |
225 | public void resumeTrigger(TriggerKey triggerkey) |
226 | throws SchedulerException { |
227 | scheduler.resumeTrigger(triggerkey); |
230 | public void resumeTriggers(GroupMatcher<TriggerKey> groupmatcher) |
231 | throws SchedulerException |
233 | scheduler.resumeTriggers(groupmatcher); |
237 | * @throws SchedulerException |
239 | public void pauseAll() throws SchedulerException |
241 | scheduler.pauseAll(); |
245 | * @throws SchedulerException |
247 | public void resumeAll() throws SchedulerException |
249 | scheduler.resumeAll(); |
创建一个Job任务:
01 | package com.gbsoft.rpt.qrz; |
05 | import org.slf4j.Logger; |
06 | import org.slf4j.LoggerFactory; |
08 | import org.quartz.JobExecutionContext; |
09 | import org.quartz.JobExecutionException; |
16 | public class HelloJob implements Job { |
18 | private static Logger _log = LoggerFactory.getLogger(HelloJob. class ); |
23 | public void execute(JobExecutionContext context) |
24 | throws JobExecutionException { |
25 | _log.info( "Hello World! - " + new Date()); |
创建触发器和调用相关的Job
1 | package com.gbsoft.rpt.qrz; |
3 | import static org.quartz.DateBuilder.evenMinuteDate; |
4 | import static org.quartz.JobBuilder.newJob; |
5 | import static org.quartz.TriggerBuilder.newTrigger; |
001 | import org.quartz.JobDetail; |
002 | import org.quartz.Scheduler; |
003 | import org.quartz.Trigger; |
004 | import org.slf4j.Logger; |
005 | import org.slf4j.LoggerFactory; |
008 | * 一个简单的测试quartz任务管理器测试类 |
012 | public class QuartzScheduleMain { |
019 | public void run() throws Exception { |
020 | Logger log = LoggerFactory.getLogger(QuartzScheduleMain. class ); |
022 | log.info( "------- Initializing ----------------------" ); |
026 | Scheduler sched = QuartzScheduleMgr.getInstanceScheduler(); |
027 | log.info( "------- Initialization Complete -----------" ); |
030 | Date runTime = evenMinuteDate( new Date()); |
032 | log.info( "------- Scheduling Job -------------------" ); |
036 | JobDetail job = newJob(HelloJob. class ) |
037 | .withIdentity( "job1" , "group1" ) |
042 | Trigger trigger = newTrigger() |
043 | .withIdentity( "trigger1" , "group1" ) |
049 | sched.scheduleJob(job, trigger); |
050 | log.info(job.getKey() + " will run at: " + runTime); |
057 | log.info( "------- Started Scheduler -----------------" ); |
060 | Thread.sleep(25L * 1000L); |
062 | } catch (Exception e) { |
065 | log.info( "-------pauseJob.. -------------" ); |
066 | sched.pauseJob(job.getKey()); |
069 | Thread.sleep(10L * 1000L); |
070 | } catch (Exception e) { |
072 | log.info( "------- resumeJob... -------------" ); |
074 | sched.resumeJob(job.getKey()); |
076 | Thread.sleep(10L * 1000L); |
078 | } catch (Exception e) { |
084 | log.info( "------- Waiting 65 seconds... -------------" ); |
087 | Thread.sleep(65L * 1000L); |
089 | } catch (Exception e) { |
093 | log.info( "------- Shutting Down ---------------------" ); |
094 | sched.shutdown( true ); |
095 | log.info( "------- Shutdown Complete -----------------" ); |
098 | public static void main(String[] args) throws Exception { |
100 | QuartzScheduleMain example = new QuartzScheduleMain(); |
转:http://www.open-open.com/lib/view/open1351324322285.html
官网地址:
http://www.quartz-scheduler.org/documentation/quartz-2.1.x/quick-start