job1任務類java
package org.quartz.examples.example9; import java.util.Date; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.quartz.JobKey; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * job1任務類 */ public class SimpleJob1 implements Job { private static Logger LOG = LoggerFactory.getLogger(SimpleJob1.class); // 必需要有public修飾的無參構造函數 public SimpleJob1() { } // 定時器執行方法 public void execute(JobExecutionContext context) throws JobExecutionException { JobKey jobKey = context.getJobDetail().getKey(); LOG.info("---------- 做業1執行。SimpleJob1 says: " + jobKey + " executing at " + new Date()); } }
job2任務類函數
package org.quartz.examples.example9; import java.util.Date; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.quartz.JobKey; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * job2任務類 */ public class SimpleJob2 implements Job { private static Logger LOG = LoggerFactory.getLogger(SimpleJob2.class); // 必需要有public修飾的無參構造函數 public SimpleJob2() { } // 定時器執行方法 public void execute(JobExecutionContext context) throws JobExecutionException { JobKey jobKey = context.getJobDetail().getKey(); LOG.info("---------- 做業2執行。SimpleJob2 says: " + jobKey + " executing at " + new Date()); } }
job1任務監聽器ui
package org.quartz.examples.example9; import static org.quartz.JobBuilder.newJob; import static org.quartz.TriggerBuilder.newTrigger; import org.quartz.JobDetail; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.quartz.JobListener; import org.quartz.SchedulerException; import org.quartz.Trigger; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * job1任務監聽器 */ public class Job1Listener implements JobListener { private static Logger LOG = LoggerFactory.getLogger(Job1Listener.class); public String getName() { return "job1_to_job2"; } public void jobToBeExecuted(JobExecutionContext inContext) { LOG.info("Job1Listener says: 做業即將執行."); } //當org.quartz被調度程序調用時。JobDetailwas即將執行(一個關聯的Triggerhas發生),可是TriggerListener否決了它的執行。 public void jobExecutionVetoed(JobExecutionContext inContext) { LOG.info("Job1Listener says: 做業執行被否決."); } public void jobWasExecuted(JobExecutionContext inContext, JobExecutionException inException) { LOG.info("Job1Listener says: 做業已執行."); // Simple job #2 JobDetail job2 = newJob(SimpleJob2.class).withIdentity("job2").build(); Trigger job2Trigger = newTrigger().withIdentity("job2Trigger").startNow().build(); try { //去執行job2 inContext.getScheduler().scheduleJob(job2, job2Trigger); } catch (SchedulerException e) { LOG.warn("Unable to schedule job2!"); e.printStackTrace(); } } }
調度器類spa
package org.quartz.examples.example9; import static org.quartz.JobBuilder.newJob; import static org.quartz.TriggerBuilder.newTrigger; import org.quartz.JobDetail; import org.quartz.JobKey; import org.quartz.JobListener; import org.quartz.Matcher; import org.quartz.Scheduler; import org.quartz.SchedulerFactory; import org.quartz.SchedulerMetaData; import org.quartz.Trigger; import org.quartz.impl.StdSchedulerFactory; import org.quartz.impl.matchers.KeyMatcher; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * 演示job任務添加監聽器,監放任務執行前、後手動處理方法 */ public class ListenerExample { Logger LOG = LoggerFactory.getLogger(ListenerExample.class); public void run() throws Exception { // 初始化一個調度工廠,並實例化一個調度類 SchedulerFactory sf = new StdSchedulerFactory(); Scheduler sched = sf.getScheduler(); // 做業將被當即執行 JobDetail job = newJob(SimpleJob1.class).withIdentity("job1").build(); Trigger trigger = newTrigger().withIdentity("trigger1").startNow().build(); // 設置job1任務監聽器 JobListener listener = new Job1Listener(); Matcher<JobKey> matcher = KeyMatcher.keyEquals(job.getKey()); sched.getListenerManager().addJobListener(listener, matcher); sched.scheduleJob(job, trigger); sched.start(); LOG.info("------- Waiting 30 seconds... --------------"); Thread.sleep(30L * 1000L); sched.shutdown(true); LOG.info("------- Shutdown Complete -----------------"); SchedulerMetaData metaData = sched.getMetaData(); LOG.info("Executed " + metaData.getNumberOfJobsExecuted() + " jobs."); } public static void main(String[] args) throws Exception { ListenerExample example = new ListenerExample(); example.run(); } }