quartz2.3.0job任务监听器,监听任务执行前后取消手动处理方法
Posted zhuwenjoyce
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了quartz2.3.0job任务监听器,监听任务执行前后取消手动处理方法相关的知识,希望对你有一定的参考价值。
job1任务类
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任务监听器
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();
调度器类
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();
以上是关于quartz2.3.0job任务监听器,监听任务执行前后取消手动处理方法的主要内容,如果未能解决你的问题,请参考以下文章
quartz2.3.0(十五)执行暂停继续执行清除,花式操作数据库中持久化的job任务
quartz2.3.0任务执行中故障情况,可设置重新执行任务