2024年3月24日发(作者:)

定时器(Quartz)使用说明

本文目前主要包括如下几个部分:

Quartz功能简介 :介绍Quartz的特点及概念。

使用Quartz的常见问题

很多用户在使用过程中遇到常见问题的解答。

快速开始:让读者尽快掌握Quartz开发。

Quartz官方开发指南:通过一些列的课程来指导如何使用Quartz.

Quartz功能简介

Quartz特点:

z Quartz能嵌入到任何独立的应用中运行。

z Quartz能在应用服务器或者Servlet容器中实例化,并且能够参与XA事务。

z Quartz能够以独立的方式运行(在它自己的Java虚拟机中),可以通过RMI使用

Quartz。

z Quartz可以被实例化为独立程序的集群(有负载均衡和容错能力)。

Job Scheduling(任务日程安排)

任务在给定的触发器(Trigger)触发时执行。触发器可以通过几乎以下所有形式的组

合方式进行创建:

z 在一天中的任意时刻(可以精确到毫秒)。

z 一周中特定的一些天。

z 一个月中特定的一些天。

z 一年中特定的一些天

z 不在日历列表中注册的一些天(比如节假日)。

z 循环特定的次数。

z 循环到特定的时间。

z 无限循环。

z 按照一定的时间间隔循环。

“任务”由创建者给定名字,并且可以加入到给定名称的“任务组”中。为了简化触

发器在日程中的管理,“触发器”也可以被给定名字和分组。任务只能加入到日程中一次,

但是可以为其注册多个触发器。在J2EE环境中,任务可以作为分布(XA)事务的一部分执

行。

Job Execution(任务执行)

• 任务是任何实现简单Job接口的Java 类,这样开发者能够执行任何完成他们工作

的任务。

• 任务类的实例可以由Quartz实例化,也可以由你的程序框架实例化。

当触发器被触发时,日程管理器将会通知某个或者多个实现了JobListener 或

TriggerListener的对象(监听器可以是简单的Java对象,或者EJBs,或者JMS消息

发布器,等等)。这些监听器在任务执行完毕后也会接到通知。

• 任务被完成后,他们会返回一个“任务完成码(JobCompletionCode)”,这个

“任务完成码”告知日程管理器任务执行的结果是成功还是失败。日程管理器会根

据成功或者失败码来采取措施,比如:立即重新执行任务。

Job Persistence(任务持久化)

Quartz设计中包括了一个JobStore接口,这样,实现这个接口的Job类可以以

多种机制实现Job的存储。

通过使用JDBCJobStore,所有的Jobs和Triggers被配置为“non-volatile”(不

轻快)的方式。即,通过JDBC存储在关系数据库中。

通过使用RAMJobStore,所有Jobs和Triggers被存储在RAM。因此,在程序

执行中没有被持久化,但这种方式的优点就是不需要外部数据库。

Transactions(事务)

Quartz通过JobStoreCMT(JDBCJobStore的一个子类)可参与JTA事务。

Quartz可以管理JTA事务(开始或者提交事务)。

Clustering(集群)

Fail-over.(容错)

Load balancing.(负载均衡)

Listeners & Plug-Ins(监听器及插件)

应用可以通过实现一个或者多个监听器接口来实现捕捉日程事件,以监视或控制任

务/触发器的行为。

可以通过插件的机制来扩展Quartz 的功能。例如:记录任务执行历史的日志,或

者从文件中载入任务和触发器的定义。