quarzt(官方)---给自己看的文档(TriggerListeners和JobListeners)

侦听器是您根据调度程序中发生的事件创建的对象。 您可能会猜到, TriggerListeners会接收与触发器相关的事件, JobListeners会接收与作业相关的事件。

触发器相关的事件包括:触发器触发,触发失灵(在本文档的“触发器”部分中讨论),并触发完成(触发器关闭的作业完成)。

org.quartz.TriggerListener接口

public interface TriggerListener {

    public String getName();

    public void triggerFired(Trigger trigger, JobExecutionContext context);

    public boolean vetoJobExecution(Trigger trigger, JobExecutionContext context);

    public void triggerMisfired(Trigger trigger);

    public void triggerComplete(Trigger trigger, JobExecutionContext context,
            int triggerInstructionCode);
}
 

作业相关事件包括:作业即将执行的通知,以及作业完成执行时的通知。

org.quartz.JobListener接口

public interface JobListener {

    public String getName();

    public void jobToBeExecuted(JobExecutionContext context);

    public void jobExecutionVetoed(JobExecutionContext context);

    public void jobWasExecuted(JobExecutionContext context,
            JobExecutionException jobException);

}
 

使用您自己的听众

要创建监听器,只需创建一个实现org.quartz.TriggerListener和/或org.quartz.JobListener接口的对象。 然后,侦听器在运行时将其注册到调度程序中,并且必须给出一个名称(或者,他们必须通过他们的getName()方法来宣传自己的名字)。

为了方便起见,比实现这些接口,您的类还可以扩展JobListenerSupport类或TriggerListenerSupport类,并且只需覆盖您感兴趣的事件。

侦听器与调度程序的ListenerManager一起注册,并且描述了监听器想要接收事件的作业/触发器的Matcher。

侦听器在运行时间内与调度程序一起注册,并且不会与作业和触发器一起存储在JobStore中。 这是因为监听器通常是与应用程序的集成点。 因此,每次应用程序运行时,都需要重新注册该调度程序。

添加对特定作业感兴趣的JobListener:

 scheduler.getListenerManager()。addJobListener(myJobListener,KeyMatcher.jobKeyEquals(new JobKey(“myJobName”,“myJobGroup”)));

您可能需要为匹配器和关键类使用静态导入,这将使您定义匹配器更清洁:

import static org.quartz.JobKey.*;
import static org.quartz.impl.matchers.KeyMatcher.*;
import static org.quartz.impl.matchers.GroupMatcher.*;
import static org.quartz.impl.matchers.AndMatcher.*;
import static org.quartz.impl.matchers.OrMatcher.*;
import static org.quartz.impl.matchers.EverythingMatcher.*;
...etc.
 

其中将上述示例转换为:

 scheduler.getListenerManager().addJobListener(myJobListener, jobKeyEquals(jobKey("myJobName", "myJobGroup")));

添加对特定组的所有作业感兴趣的JobListener:

 scheduler.getListenerManager().addJobListener(myJobListener, jobGroupEquals("myJobGroup"));

添加对两个特定组的所有作业感兴趣的JobListener:

 scheduler.getListenerManager().addJobListener(myJobListener, or(jobGroupEquals("myJobGroup"), jobGroupEquals("yourGroup")));

添加对所有作业感兴趣的JobListener:

 scheduler.getListenerManager().addJobListener(myJobListener, allJobs());

...注册TriggerListeners的工作原理相同。

Quartz的大多数用户并不使用侦听器,但是当应用程序需求创建需要事件通知时,方便,而Job不必明确地通知应用程序。

时间: 2024-12-28 11:01:23

quarzt(官方)---给自己看的文档(TriggerListeners和JobListeners)的相关文章

发现在看完objc基本语法之后,还是看Apple文档比较有用。

现在已经停止找中文资料了,因为很多例子已经过时,运行不出来. 看完objc基本语法以后,Apple的资料也看得懂了. 还是应该跟着Apple的入门指南开始学,今后也应该以Apple的文档为主. 发现在看完objc基本语法之后,还是看Apple文档比较有用.,布布扣,bubuko.com

Firefly官方教程之DBentrust使用文档

1.dbentrust说明 该模块主要是对数据库与memcached存储的处理.里面封装了从memcached数据到python对象的映射.可以以操纵python对象的方式进行memcached中存储的数据的操作,只要在不同的进程中实例化相同名称的memobject对象,就能保证对象中的数据是一致的.还包含了将这个对象中的数据同步到数据库的处理方法. 2.结构解析 <ignore_js_op> MemObject类规定了数据的格式,所有的数据都存储在memcached中,为了区分不同的数据,每

Firefly官方教程之Distributed使用文档

distributed使用文档1.distributed说明该模块主要封装了各个服务进程间进行通信的方法.node子节点域root根节点进程中的接口调用返回的都是延迟对象.关于延迟对象的使用,详见twisted中Deferred对象.2.结构解析 <ignore_js_op> PBRoot,root节点对象ChildsManager,子节点管理基类Child对象对应的是连接到本服务进程的某个服务进程对象.称为子节点对象RemoteObject远程调用对象,子节点服务进程中实现.可以通过这对象去

Firefly官方教程之Netconnect使用文档

1.distributed说明该模块包含了服务端与客户端通信的一些处理方法,包括发送数据的封装,协议头的封装,tcp通信时进行分包,处理粘包问题.2.结构解析 LiberateFactory,协议工厂,所有连接的本质,服务端与客户端通信的这一行为的形象化,它包含三个部分:1)LiberateProtocol,通信协议类,连接建立.断开后的操作,发送数据等都由它来控制2)DataPackProtoc,数据包协议的定义,所有的数据解析都要遵守它定制的规则3)ConnectionManager,连接管

谈谈WebService开发-应用篇(三)-教你如何看WSDL文档

作为webservice客户端开发,在日常工作中可能经常会拿到一个对方提供的wsdl地址或文档,那么拿到这个地址后我们如何编写客户端调用代码呢,前面几篇只是以个人经验的方式写了下,那么真正要根据wsdl文档来编写客户端调用代码就必须学会看懂wsd文档.下面就结合之前的demo来深入剖析下wsdl文档,最后以图解的方式形象说明下. 本文以之前的SayHello的Demo来深入分析下wsdl文档的几个部分,个人认为可以共分6部分,下面分别介绍: <definitions/> 这部分在基础篇里已经介

如何快速掌握官方提供的java API文档使用技巧

API的特点就是查阅方便,无需购买任何书籍,通过在线API文档官方网站,就可以随时随地查看JDK文档(即API文档),为编程提供极大的便利,节省了大量的时间.在线API文档的具体使用方法如下: 1.打开浏览器(任何一个浏览器都可以) 2.在搜索框输入java api,单击“百度一下”进行搜索 3.搜索完成后,鼠标下滑就能看到“在线API文档”字样了,单击超链接即可进入网站 4.进入网站后,直接单击“常用API文档索引”下面的java咖啡图标,进入文档 5.下面这个页面就是java api文档主页

quarzt(官方)---给自己看的文档(SimpleTrigger)

第5课:SimpleTrigger SimpleTrigger应该满足您的调度需求,如果您需要在特定时刻或特定时刻执行完整的作业,然后按特定间隔进行重复. 例如,如果您希望触发器在2015年1月13日正好11:23:54 AM触发,或者如果您希望在那时开火,然后每十秒钟再次触发五次. 有了这个描述,您可能会发现SimpleTrigger的属性包括:开始时间,结束时间,重复计数和重复间隔,可能并不奇怪. 所有这些属性正是您期望的属性,只有与结束时间属性相关的几个特殊说明. 重复计数可以为零,正整数

quarzt(官方)---给自己看的文档(CronTrigger)

第6课:CronTrigger CronTrigger通常比SimpleTrigger更有用,如果您需要一个基于日历的概念重复的作业启动计划,而不是SimpleTrigger的精确指定的间隔. 使用CronTrigger,您可以指定点火时间表,例如"每个星期五中午",或"每个工作日和上午9:30",甚至"每周一,周三上午9点到10点之间每隔5分钟和1月份的星期五". 即使如此,像CronTrigger一样,CronTrigger有一个startT

【转】看C++文档的小知识

转载:http://www.ggv.com.cn/forum/clib/ctype/isspace.html 函数isspace 原型:extern int isspace(int c);    用法:#include <ctype.h>    功能:判断字符c是否为空白符    说明:当c为空白符时,返回非零值,否则返回零.  空白符指空格.水平制表.垂直制表.换页.回车和换行符.    举例: // isspace.c #include <syslib.h> #include