[译]Quartz.NET 框架 教程(中文版)2.2.x 之第七课 触发监听器和作业任务监听器

第七课:触发监听器和作业任务监听器

监听器是在调度器中基于事件机制执行操作的对象。你大概可以猜到,触发监听器接收响应跟触发器有关的事件,作业任务监听器接收响应跟作业任务有关的事件。

跟触发器有关的事件包括:触发器被触发,触发器触发失败(在触发器课程中讨论过),以及触发器触发完成(触发器完成后作业任务开始运行)。

 1 public interface ITriggerListener
 2 {
 3      string Name { get; }
 4
 5      void TriggerFired(ITrigger trigger, IJobExecutionContext context);
 6
 7      bool VetoJobExecution(ITrigger trigger, IJobExecutionContext context);
 8
 9      void TriggerMisfired(ITrigger trigger);
10
11      void TriggerComplete(ITrigger trigger, IJobExecutionContext context, int triggerInstructionCode);
12 }

跟作业任务相关的事件包括:job即将被执行的通知和job执行完成的通知事件。

The IJobListener Interface

 1 public interface IJobListener
 2 {
 3     string Name { get; }
 4
 5     void JobToBeExecuted(IJobExecutionContext context);
 6
 7     void JobExecutionVetoed(IJobExecutionContext context);
 8
 9     void JobWasExecuted(IJobExecutionContext context, JobExecutionException jobException);
10 }

使用自己开发的监听器

要创建一个监听器,可以简单地创建一个实现org.quartz.TriggerListener或org.quartz.JobListener接口的对象即可。监听器会在运行期间注册到调度器中,并且必须要给定监听器名(或者更确切地说,监听器会调用getName方法获取自己的名字)。

为了方便使用,监听器除了实现这些接口,你还可以继承ITriggerListener 和IJobListener 类,可以只重写你感兴趣的事件方法。

监听器注册到调度器中的监听器管理类时还携带着一个匹配器,这个匹配器描述了作业任务和触发器的监听器想接收的事件。

监听器在运行期间注册到调度中,但是不会把作业任务和触发器存储到JobStore中。那是因为监听器在你的应用中通常是一些点的集合。因此,每次应用运行时,监听器都需要重新在调度器中注册。

在一个指定的作业任务中添加Job监听器:

scheduler.ListenerManager.AddJobListener(myJobListener, KeyMatcher<JobKey>.KeyEquals(new JobKey("myJobName", "myJobGroup")));

在你感兴趣的一个作业组中所有的作业任务添加上Job监听器:

scheduler.ListenerManager.AddJobListener(myJobListener, GroupMatcher<JobKey>.GroupEquals("myJobGroup"));

在你感兴趣的两个作业组中所有的作业任务添加上Job监听器:
scheduler.ListenerManager.AddJobListener(myJobListener,

OrMatcher<JobKey>.Or(GroupMatcher<JobKey>.GroupEquals("myJobGroup"), GroupMatcher<JobKey>.GroupEquals("yourGroup")));

在所有作业中添加Job监听器:

1 scheduler.ListenerManager.AddJobListener(myJobListener, GroupMatcher<JobKey>.AnyGroup());

注册Trigger监听器也用同样的方法。

大部分的Quartz用户都不会用到监听器,但是当应用要求创建需要的事件通知时,而没有Job实例去通知应用时,使用监听器非常方便。

时间: 2024-11-14 00:52:52

[译]Quartz.NET 框架 教程(中文版)2.2.x 之第七课 触发监听器和作业任务监听器的相关文章

[译]Quartz.Net 框架 教程(中文版)2.2.x 之第三课 更多关于Jobs和JobDetails

第三课 更多关于Jobs和JobDetails 在这二课我们已经学习到,Jobs接口非常容易实现,只有一个execute方法.我们需要再学习一些知识去理解jobs的本质,Job接口的execute方法以及JobDetails接口. 当你实现Job接口类,Quartz需要你提供job实例的各种参数,Job接口实现类中的代码才知道如何去完成指定类型Job的具体工作.这个过程是通过JobDetail类来完成的,该类会在下一个章节作简要介绍.        JobDetail的实例是调用JobBuild

[译]Quartz.NET 框架 教程(中文版)2.2.x 之第四课 更多关于Triggers

第四课 更多关于Triggers 跟作业任务类似,触发器也非常容易使用,但是在你能够充分掌握Quartz之前,你需要知道并理解许多触发器的客户化的参数.前面已经提到过,有许多不同类型的触发器供你选择,适用不同的调度需求. 你将会在第五课 Simple Trigger和第六课 Triggers学到这两种常用的触发器类型. 触发器通用属性 所有类型的触发器都有TriggerKey属性去跟踪触发器标识,除了这一个事实之外,还有许多其他的属性,对所有触发器类型都适用.这些通用属性在创建触发器定义时通过T

[译]Quartz.NET 框架 教程(中文版)2.2.x 之第六课 CronTrigger

第六课 CronTrigger CronTrigger比SimpleTrigger更常用,当你需要一个基于日历般概念的作业调度器,而不是像SimpleTrigger那样精确指定间隔时间. 使用SimpleTrigger,你可以这样指定触发时间表例如“每周五的中午”,或是“每周末的上午9:30”,甚至是“一月份每周一.三.五上午9:00到10:00之间每5分钟”. 虽然如此,跟SimpleTrigger一样,CronTrigger也需要指定startTime让调度器生效,指定endTime让调度器

[译]Quartz.NET 框架 教程(中文版)2.2.x 之第五课 SimpleTrigger

第五课 SimpleTrigger 如果你需要在一个指定时间段内执行一次作业任务或是在指定的时间间隔内多次执行作业任务,SimpleTrigger应该能满足你的调度需求.例如,你希望触发器在2015年1月13日上午11:23:54准时触发,或是希望在那个时间点触发,然后再重复触发5次,每隔10秒一次.有了这样的描述,你就不会对SimpleTrigger包含的参数感到奇怪:开始执行时间,结束执行时间,重复次数和重复执行间隔时间.所有的参数都是你期望的那样,只是关于结束执行时间参数有两条特别的提示.

[译]Quartz.NET 框架 教程(中文版)2.2.x 之第八课 调度监听器

第八课 调度监听器 调度监听器和触发监听器和触发监听器.作业任务监听器非常相似,只是调度监听器在调度器内接收通知事件,而不需要关联具体的触发器或作业任务事件. 跟调度监听器相关的事件,添加作业任务/触发器,移除作业任务/触发器,调度器发生严重错误,调度器关闭等. The ISchedulerListener Interface public interface ISchedulerListener { void JobScheduled(Trigger trigger); void JobUns

Quartz 框架 教程(中文版)2.2.x

Quartz 框架 教程(中文版)2.2.x 之第一课 开始使用Quartz框架 Quartz 框架 教程(中文版)2.2.x 之第二课 Quartz API,Jobs和Triggers简介 Quartz 框架 教程(中文版)2.2.x 之第三课 更多关于Jobs和JobDetails Quartz 框架 教程(中文版)2.2.x 之第四课 更多关于Triggers Quartz 框架 教程(中文版)2.2.x 之第五课 SimpleTrigger Quartz 框架 教程(中文版)2.2.x

(译)Windsor入门教程---第五部分 添加日志功能

介绍 现在我们已经有了基础的框架了,是时候添加内容了,那么我们首先应该考虑的就是在应用程序中添加日志功能.我们会使用Windsor来配置,在这一部分,你将学习Windsor之外的其他功能. Logging Facility 在上一部分说过,Windsor有很多自带的可选的功能组件,他们扩展了Windsor的即用性.在这一部分,我们将在程序中添加日志功能. Logging Facility提供了一些常用的日志框架比如Log4net.Nlog,以及mvc内置的日志框架Trace.Logging Fa

(译)Windsor入门教程---第三部分 编写第一个Installer

简介 在第二部分我们创建了控制器工厂.现在我们要把我们的控制器交给Windsor来管理. Installer Windsor有一个专门的类installer.cs,用来向容器注册组件.在你的应用程序中至少会有几个这样的installer类,所以要保持他们的代码整洁以及可见性.接下来在我们的应用程序中新建一个专门的文件夹"Installer"来存放这些类.我们首先要注册到容器中的就是控制器,所以我们先来新建一个ControllersInstaller.cs类. Controller in

Java - Struts框架教程 Hibernate框架教程 Spring框架入门教程(新版) sping mvc spring boot spring cloud Mybatis

https://www.zhihu.com/question/21142149 http://how2j.cn/k/hibernate/hibernate-tutorial/31.html?tid=63 https://www.zhihu.com/question/29444491/answer/146457757 1. Java - Struts框架教程Struts 是Apache软件基金会(ASF)赞助的一个开源项目.通过采用JavaServlet/JSP技术,实现了基于Java EEWeb