飞翔飞翔
主页
  • 计算机基础

    • TCP协议
  • 数据库

    • SQL教程
  • 编程语言

    • C语言
    • Python2
    • Python3
  • 数据格式

    • JSON教程
  • 工具

    • Markdown指南
  • Git

    • GitFlow
  • Quartz

    • Quartz教程
  • Java

    • Java设计模式
  • 缓存

    • Redis教程
联系
阿里云
主页
  • 计算机基础

    • TCP协议
  • 数据库

    • SQL教程
  • 编程语言

    • C语言
    • Python2
    • Python3
  • 数据格式

    • JSON教程
  • 工具

    • Markdown指南
  • Git

    • GitFlow
  • Quartz

    • Quartz教程
  • Java

    • Java设计模式
  • 缓存

    • Redis教程
联系
阿里云
  • 前言

    • 1.起步
  • 第1章 快速入门指南

    • 1.下载和安装
    • 2.配置
    • 3.运行一个简单的应用
  • 第2章 Quartz教程

    • 1.使用Quartz
    • 2.Quartz API、作业和触发器
    • 3.更多关于作业和作业详细信息
    • 4.更多关于触发器
    • 5.简单触发器
    • 6.Cron触发器
    • 7.触发器监听器和作业监听器
    • 8.调度程序监听器
    • 9.作业存储JobStore
    • 10.配置、资源使用和调度器工厂
    • 11.高级(企业)功能
    • 12.Quartz的其他特征
    • 13.专题之Corn触发器教程
  • 第3章 15个官网示例

    • 概览
    • 1.示例1 - 你的第一个Quartz程序
    • 2.示例2 - 简单触发器
    • 3.示例3 - Cron触发器
    • 4.示例4 - 作业状态和参数
    • 5.示例5 - 处理作业失误
    • 6.示例6 - 处理作业异常
    • 7.示例7 - 中断作业
    • 8.示例8 - 日历带来的乐趣
    • 9.示例9 - 作业监听器
    • 10.示例10 - 使用Quartz插件
    • 11.示例11 - 高负载下的Quartz
    • 12.示例12 - 使用RMI的远程作业调度
    • 13.示例13 - 集群化的Quartz
    • 14.示例14 - 触发器优先级
    • 15.示例15 - TC集群化的Quartz

触发器监听器和作业监听器

监听器是您创建的对象,用于根据调度程序中发生的事件执行操作。正如您可能猜到的,触发器监听器接收与触发器相关的事件,作业监听器接收作业相关的事件。

触发器相关事件包括:触发器触发、触发器无触发(在本文档的“触发器”部分讨论)和触发器完成(触发器触发的作业完成)。

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类,并简单地覆盖您感兴趣的事件。

监听器与一个匹配器一起注册到调度器的监听器管理中心中,该匹配器描述了监听器希望接收事件的哪些作业或触发器。

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

添加对特定作业有效的作业监听器:

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")));

添加对特定组的所有作业有效的作业监听器:

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

添加对两个特定组的所有作业有效的作业监听器:

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

添加对所有作业有效的作业监听器:

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

注册触发器监听器的方式与此(作业监听器)相同。

大多数Quartz用户不使用监听器,但当应用程序需要通知事件时,监听器很方便,而作业本身不必明确通知应用程序。

上一页
6.Cron触发器
下一页
8.调度程序监听器