转载请出自出处:http://eksliang.iteye.com/blog/2208624
一.概述
listener是一个监听器对象,用于监听scheduler中发生的事件,然后执行相应的操作;你可能已经猜到了,TriggerListeners接受与trigger相关的事件,JobListeners接受与jobs相关的事件。
二.JobListener监听器
job相关的事件包括:job即将执行时触发以及job执行完毕时触发。
具体实例如下所示:
定义job类,用来打印任务详情,代码如下:
package com.ickes.job; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; /** * 实现Job接口,定义运行的任务 * @author Ickes */ public class SimpleJob implements Job { public void execute(JobExecutionContext context) throws JobExecutionException { //打印任务详情 System.out.println( context.getJobDetail().getGroup() +"——"+context.getJobDetail().getName() +"——"+context.getTrigger().getName() +"——"+context.getTrigger().getGroup()); } }
JobListener监听器类,代码如下:
package com.ickes.job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.quartz.JobListener; /** * JobListener监听器 * @author Ickes */ public class Job1Listener implements JobListener { /** * 返回当前监听器的名字,这个方法必须被写他的返回值; * 因为listener需要通过其getName()方法广播它的名称 */ public String getName() { return "Job1Listener"; } /** * 任务被触发前触发 */ public void jobToBeExecuted(JobExecutionContext context) { System.out.println(context.getJobDetail().getName()+":A"); } /** * 这个不管 */ public void jobExecutionVetoed(JobExecutionContext context) { System.out.println(context.getJobDetail().getName()+":B"); } /** * 任务调度完成后触发 */ public void jobWasExecuted(JobExecutionContext context, JobExecutionException jobException) { System.out.println(context.getJobDetail().getName()+":C"); } }
JobListener监听器测试类,代码如下:
package com.ickes.job; import java.util.Date; import org.quartz.JobDetail; import org.quartz.JobListener; import org.quartz.Scheduler; import org.quartz.SchedulerFactory; import org.quartz.SimpleTrigger; import org.quartz.impl.StdSchedulerFactory; /** * @author Ickes */ public class ListenerDemo { public static void main(String[] args) throws Exception { //第一步:创建一个JobDetail实例 JobDetail jobDetail = new JobDetail("j_job1","j_group1", SimpleJob.class); //第二步:通过SimpleTrigger触发器定义调度规则:马上启动,每2秒运行一次,共运行100次 SimpleTrigger simpleTrigger = new SimpleTrigger("t_job1","t_group1"); simpleTrigger.setStartTime(new Date()); simpleTrigger.setEndTime(new Date(System.currentTimeMillis()+1000*5)); simpleTrigger.setRepeatInterval(2000); //运行间隔单位为毫秒 simpleTrigger.setRepeatCount(10); //运行次数 //第三步:通过SchedulerFactory获取一个调度器实例 SchedulerFactory schedulerFactory = new StdSchedulerFactory(); Scheduler scheduler = schedulerFactory.getScheduler(); //第四步:关联监听器 JobListener listener = new Job1Listener(); scheduler.addJobListener(listener); jobDetail.addJobListener(listener.getName()); //第五步:将job跟trigger注册到scheduler中进行调度 scheduler.scheduleJob(jobDetail, simpleTrigger); //第六步:调度启动 scheduler.start(); } }
三.TriggerListener监听器
trigger相关的事件包括:trigger的触发、trigger错过触发(misfire)以及trigger的完成(即trigger触发的job执行完成)。
具体实例如下所示:
Trigger1Listener监听器类,该类实现了TriggerListener接口,代码如下:
package com.ickes.job; import org.quartz.JobExecutionContext; import org.quartz.Trigger; import org.quartz.TriggerListener; /** * * @author Ickes * */ public class Trigger1Listener implements TriggerListener { public String getName() { return "Trigger1Listener"; } /** * 被调度时触发,和它相关的org.quartz.jobdetail即将执行。 * 该方法优先vetoJobExecution()执行 */ public void triggerFired(Trigger trigger, JobExecutionContext context) { System.out.println("A"); } /** * 被调度时触发,和它相关的org.quartz.jobdetail即将执行。 */ public boolean vetoJobExecution(Trigger trigger, JobExecutionContext context) { System.out.println("B"); return false; } /** * 被调度时,触发失败时触发 */ public void triggerMisfired(Trigger trigger) { System.out.println("C"); } /** * 执行完毕时触发 */ public void triggerComplete(Trigger trigger, JobExecutionContext context, int triggerInstructionCode) { System.out.println("D"); } }
TriggerListener监听器测试类TriggerListenerDemo代码如下:
package com.ickes.job; import java.util.Date; import org.quartz.JobDetail; import org.quartz.Scheduler; import org.quartz.SchedulerFactory; import org.quartz.SimpleTrigger; import org.quartz.TriggerListener; import org.quartz.impl.StdSchedulerFactory; /** * @author Ickes */ public class TriggerListenerDemo { public static void main(String[] args) throws Exception { //第一步:创建一个JobDetail实例 JobDetail jobDetail = new JobDetail("j_job1","j_group1", SimpleJob.class); //第二步:通过SimpleTrigger触发器定义调度规则:马上启动,每2秒运行一次,共运行100次 SimpleTrigger simpleTrigger = new SimpleTrigger("t_job1","t_group1"); simpleTrigger.setStartTime(new Date()); //5秒钟还有任务没有完成,所以 simpleTrigger.setEndTime(new Date(System.currentTimeMillis()+1000*5)); simpleTrigger.setRepeatInterval(2000); //运行间隔单位为毫秒 simpleTrigger.setRepeatCount(10); //运行次数 //第三步:通过SchedulerFactory获取一个调度器实例 SchedulerFactory schedulerFactory = new StdSchedulerFactory(); Scheduler scheduler = schedulerFactory.getScheduler(); //第四步:关联监听器 TriggerListener listener = new Trigger1Listener(); scheduler.addTriggerListener(listener); simpleTrigger.addTriggerListener(listener.getName()); //第五步:将job跟trigger注册到scheduler中进行调度 scheduler.scheduleJob(jobDetail, simpleTrigger); //第六步:调度启动 scheduler.start(); } }
三.SchedulerListener监听器
SchedulerListener与TriggerListener、JobListener类似,但它仅接收来自Scheduler自身的消息,而不一定是某个具体的trigger或job的消息。
scheduler相关的消息包括:job/trigger的增加、job/trigger的删除、scheduler内部发生的严重错误以及scheduler关闭的消息等;
SchedulerListener接口如下:
public interface SchedulerListener { public void jobScheduled(Trigger trigger); public void jobUnscheduled(String triggerName, String triggerGroup); public void triggerFinalized(Trigger trigger); public void triggersPaused(String triggerName, String triggerGroup); public void triggersResumed(String triggerName, String triggerGroup); public void jobsPaused(String jobName, String jobGroup); public void jobsResumed(String jobName, String jobGroup); public void schedulerError(String msg, SchedulerException cause); public void schedulerStarted(); public void schedulerInStandbyMode(); public void schedulerShutdown(); public void schedulingDataCleared(); }
SchedulerListener也是注册到scheduler的ListenerManager上的 ,这里就不做笔记了
相关推荐
Quartz2.2.1之JobListener、Triggerlistener、SchedulerListener实例使用,具体效果与过程看博文 http://blog.csdn.net/evankaka/article/details/45498363
NULL 博文链接:https://zhangyumeng.iteye.com/blog/286528
任务执行过程可以通过JobListener和TriggerListener进行监控,它们可以在任务开始和结束时接收通知。 4. **任务持久化(Job Persistence)**:Quartz 提供JobStore接口,允许不同的持久化策略。JDBCJobStore将Jobs...
- 你还可以通过实现`org.quartz.SchedulerListener`和`org.quartz.JobListener`接口来监听Scheduler和Job的事件。 8. **错误处理和恢复策略** - 通过实现`org.quartz.Job`接口中的`execute()`方法,你可以处理Job...
- TriggerListener 和 JobListener:添加监听器以获取 Job 和 Trigger 执行的相关信息。 5. **工程结构**:这个 Eclipse 工程应该包含了 Quartz 的库依赖,每个 example 作为一个独立的 Java 类,以及运行这些例子...
7. **监听器**:TriggerListener 和 JobListener 用于监听 Job 和 Trigger 的事件,例如 Job 的执行开始、结束,Trigger 的触发等。通过实现这些接口,你可以实现自定义的行为,比如日志记录、错误处理或通知机制。 ...
5. **插件和API**:Quartz还提供了一些插件,如JobStore插件用于存储Job和Trigger,以及TriggerListener和JobListener,它们可以在Job执行前后执行自定义操作。Quartz的API友好且强大,使得集成到现有项目中变得容易...
- TriggerListener和JobListener:监听Trigger的触发和Job的执行情况,提供日志记录、异常处理等扩展功能。 总的来说,Quartz是一个强大且灵活的作业调度框架,通过理解其核心概念和配置方式,可以有效地在Java应用...
4. **插件化**:Quartz提供了丰富的插件,如JobStore插件用于存储任务和触发器,TriggerListener和JobListener用于监听任务执行状态。 5. **易用性**:Quartz提供了一套直观的API,使得开发者能够方便地创建、调度和...
4. **插件化设计**:Quartz提供了许多插件,如JobStore插件用于存储任务和触发器,TriggerListener和JobListener用于监听任务执行状态。 Quartz-Web项目增加了Web界面,使得管理变得更加直观和易用: 1. **任务创建...
9. **错误处理与回调**:Quartz提供异常处理机制,当Job执行抛出异常时,可以通过实现`org.quartz.JobListener`或`org.quartz.TriggerListener`接口来进行错误处理和回调。 10. **扩展性**:Quartz的灵活性使得它...
- **任务触发监听器**:通过实现TriggerListener和JobListener接口,可以监控任务的触发和执行状态。 6. **异常处理和监控** - **错误处理**:当Job执行出现异常时,可以通过设置`@DisallowConcurrentExecution`...
在"Quartz Spring整合——附带webservice Demo"的项目中,我们可以看到如何将这两个强大的工具结合在一起。这个Demo可能包含了一个使用Quartz调度器来触发Web服务调用的示例。Web服务(Webservice)是一种基于标准的...
6. **监听器(Listeners)**:Quartz提供了多种类型的监听器,如JobListener、TriggerListener和SchedulerListener,它们可以监听Job执行、Trigger触发和Scheduler的状态变化,从而实现更细粒度的控制和日志记录。...
5. **插件扩展**:Quartz提供了一系列插件,如JobStore插件用于存储调度信息,TriggerListener和JobListener插件可以监听任务的执行状态。 6. **API友好**:Quartz提供了简洁的API,使得开发者可以方便地创建、调度...
9. **异常处理**:可以通过实现`org.quartz.JobListener`和`org.quartz.TriggerListener`接口来监听Job的执行情况,进行异常处理。 10. **Job持久化**:为了在应用重启后还能恢复Job和Trigger,通常会配置Quartz...
- Quartz提供了多种监听器,如JobListener、TriggerListener和SchedulerListener,可以监听Job执行、Trigger触发和Scheduler状态变化,为日志记录、监控和异常处理提供便利。 6. **API与配置**: - Quartz提供了...
6. **监听器**:Quartz允许我们定义JobListener和TriggerListener,它们会在Job执行前后或Trigger触发时触发一些回调事件,便于监控和日志记录。 学习QuartzDemo的过程中,我们需要理解以下几个关键概念: - ...
QuartzDemo是一个针对iOS平台的源码示例项目,它主要展示了如何使用Quartz 2D图形编程接口来创建自定义的视觉效果和图形。Quartz 2D是Apple为iOS和Mac OS X提供的一种核心图形库,允许开发者在应用程序中绘制2D图形...
Quartz也提供了`JobListener`和`TriggerListener`,可以对Job的执行结果进行监控,实现定制化的错误处理逻辑。 9. **配置灵活性**:Quartz的配置非常灵活,可以通过XML、Java代码或API进行。这使得我们能够根据需求...