Quartz入门Demo(三)之TriggerListener 和 JobListener
来源:互联网 发布:狼道seo 编辑:程序博客网 时间:2024/05/29 09:55
介绍
Quartz框架是一个全功能、开源的任务调度服务,可以集成几乎任何的Java应用程序—从小的单片机系统到大型的电子商务系统。Quartz可以执行上千上万的任务调度。
TriggerListener
TriggerListener 是一个监听器,用于监听Trigger。可以通过实现TriggerListener重写各方法进行使用。
JobListener
JobListener是用于监听Job状态的监听器
直接上代码
JobListenerDemo类
package com.v.listenertest;import org.quartz.JobExecutionContext;import org.quartz.JobExecutionException;import org.quartz.JobListener;import org.slf4j.Logger;import org.slf4j.LoggerFactory;public class JobListenerDemo implements JobListener { Logger _log = LoggerFactory.getLogger(JobListenerDemo.class); @Override public String getName() { // TODO Auto-generated method stub return "MyJobListener"; } @Override public void jobToBeExecuted(JobExecutionContext context) { // TODO Auto-generated method stub _log.info(" Job 被触发了,此时Job 上的 execute() 方法将要被执行"); } @Override public void jobExecutionVetoed(JobExecutionContext context) { // TODO Auto-generated method stub _log.info("执行任务被否决了!"); } @Override public void jobWasExecuted(JobExecutionContext context, JobExecutionException jobException) { // TODO Auto-generated method stub _log.info("Job 的执行完成了,此方法被调用----"+context.getJobDetail().getKey()); }}
TriggerListenerDemo类
package com.v.listenertest;import org.quartz.JobExecutionContext;import org.quartz.Trigger;import org.quartz.Trigger.CompletedExecutionInstruction;import org.quartz.TriggerListener;import org.slf4j.Logger;import org.slf4j.LoggerFactory;public class TriggerListenerDemo implements TriggerListener{ Logger _log = LoggerFactory.getLogger(TriggerListenerDemo.class); @Override public String getName() { // TODO Auto-generated method stub return "MyTriggerListener"; } @Override public void triggerFired(Trigger trigger, JobExecutionContext context) { // TODO Auto-generated method stub _log.info(" Trigger 被触发了,此时Job 上的 execute() 方法将要被执行"); } @Override public boolean vetoJobExecution(Trigger trigger, JobExecutionContext context) { // TODO Auto-generated method stub //返回false表示执行任务 _log.info("拒绝执行任务!"); return true; } @Override public void triggerMisfired(Trigger trigger) { // TODO Auto-generated method stub _log.info("当前触发错过了!"); } @Override public void triggerComplete(Trigger trigger, JobExecutionContext context, CompletedExecutionInstruction triggerInstructionCode) { // TODO Auto-generated method stub _log.info("Trigger 被触发并且完成了 Job 的执行,此方法被调用----"+trigger.getKey()); }}
test类
package com.v.listenertest;import static org.quartz.JobBuilder.newJob;import static org.quartz.SimpleScheduleBuilder.simpleSchedule;import static org.quartz.TriggerBuilder.newTrigger;import java.util.Date;import org.quartz.JobDetail;import org.quartz.JobKey;import org.quartz.Matcher;import org.quartz.Scheduler;import org.quartz.SchedulerFactory;import org.quartz.SimpleTrigger;import org.quartz.Trigger;import org.quartz.TriggerKey;import org.quartz.TriggerListener;import org.quartz.impl.StdSchedulerFactory;import org.quartz.impl.matchers.KeyMatcher;import com.v.paramtest.HelloJob2;public class test { public static SimpleTrigger trigger1,trigger2 = null; public static void main(String[] args) { trigger1 = newTrigger().withIdentity("trigger1", "group1").startAt(new Date()).withSchedule(simpleSchedule() .withIntervalInSeconds(20).withRepeatCount(5).withMisfireHandlingInstructionNowWithExistingCount()) .build(); trigger2 = newTrigger().withIdentity("trigger2", "group2").startAt(new Date()).withSchedule(simpleSchedule() .withIntervalInSeconds(20).withRepeatCount(5).withMisfireHandlingInstructionNowWithExistingCount()) .build(); test1(trigger1,trigger2); } public static void test1(Trigger trigger1,Trigger trigger2) { try { SchedulerFactory schedulerFactory = new StdSchedulerFactory(); Scheduler scheduler = null; scheduler = schedulerFactory.getScheduler(); JobDetail job1 = newJob(HelloJob2.class).withIdentity("job1", "group1").build(); JobDetail job2 = newJob(HelloJob2.class).withIdentity("job2", "group2").build(); TriggerListenerDemo lisntener = new TriggerListenerDemo(); JobListenerDemo jobListener = new JobListenerDemo();// 直接添加为全局监听器// scheduler.getListenerManager().addTriggerListener(lisntener); Matcher<TriggerKey> matcher1 = KeyMatcher.keyEquals(trigger1.getKey());//局部监听 scheduler.getListenerManager().addTriggerListener(lisntener, matcher1); Matcher<JobKey> matcher2 = KeyMatcher.keyEquals(job1.getKey());//局部监听 scheduler.getListenerManager().addJobListener(jobListener, matcher2); job1.getJobDataMap().put("ExecutionDelay", 1000L); job2.getJobDataMap().put("ExecutionDelay", 1000L); scheduler.scheduleJob(job1, trigger1); scheduler.scheduleJob(job2, trigger2); scheduler.start(); } catch (Exception se) { se.printStackTrace(); } }}
监听器可注册为局部监听和全局监听,全局监听顾名思义,TiggerListener则是监听所有Trigger。Job同理。
附上Demo:QuartzDemo
0 0
- Quartz入门Demo(三)之TriggerListener 和 JobListener
- Quartz实现自己的JobListener和TriggerListener
- Quartz教程七--TriggerListener和JobListener
- Quartz教程 第7课 TriggerListener和JobListener
- 【Quartz】 JobListener、Triggerlistener、SchedulerListener介绍与使用
- 【Quartz】 JobListener、Triggerlistener、SchedulerListener介绍与使用
- Quartz入门Demo(二)之CronTrigger
- SimpleTrigger、CronTrigger、SchedulerListener、TriggerListener、JobListener区别
- Quartz-TriggerListener解读
- Quartz-JobListener解读
- Quartz入门Demo(一)
- spring + Quartz 入门demo
- spring + Quartz 入门demo
- 任务调度Quartz初探Demo(三)
- Quartz学习——Quartz简单入门Demo(二)
- Quartz学习——Quartz简单入门Demo(二)
- Quartz 框架快速入门(三)
- Quartz 框架快速入门(三)
- python-7-如何使用生成器函数实现可迭代对象?
- Hibernate的一个注释 @Transient
- css3元素私有前缀及其用法
- CS107-Lecture 5-Note
- 清除eclipse中 Launch configuration的历史记录
- Quartz入门Demo(三)之TriggerListener 和 JobListener
- 美团二面
- hdu1080(带权值最长上升子序列)
- 分针网—IT教育: 调皮的JavaScript
- [leetcode] 1. Two Sum
- Oracle 使用OUT参数创建/调用存储过程
- HttpStatus各种状态
- axis2 打包 aar文件
- ionic cordovaCamera拍照上传服务器