Quartz

来自站长百科
跳转至: 导航、​ 搜索
Quartz

Quartz是一个任务日程管理系统.

源码概况[ ]

授权协议:免费软件

运行环境:JAVA

官方网站:http://www.quartz-scheduler.org/

源码下载:官方下载

概述[ ]

Quartz是OpenSymphony开源组织在Job scheduling领域又一开源项目,它可以与J2EEJ2SE应用程序相结合使用也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的日程序表。Jobs可以做成标准的JAVA组件或Ejbs.

软件的角度来看,Quartz用一个小Java库发布文件(.jar文件),这个库文件包含了所有Quartz核心功能。这些功能的主要接口(API)是Scheduler接口。它提供了简单的操作,例如:将任务纳入日程或者从日程中取消,开始/停止/暂停日程进度。

如果你想将软件组件的执行纳入到日程中,它们只需简单地实现Job接口,这个接口有一个execute()方法。如果希望在日程安排的时间到达时通知组件,那么这些组件应实现TriggerListener或者JobListener接口。

Quartz主过程可以在应用中启动或者运行,也可以作为一个独立的应用(带有RMI接口),或者在一个J2EE应用服务器中运行,并且可作为其实J2EE组件的一种引用资源。

特点[ ]

  • Quartz能嵌入到任何独立的应用中运行。
  • Quartz能在应用服务器或者Servlet容器中实例化,并且能够参与XA事务。
  • Quartz能够以独立的方式运行(在它自己的Java虚拟机中),可以通过RMI使用Quartz。
  • Quartz可以被实例化为独立程序的集群(有负载均衡和容错能力)。

Job Scheduling(任务日程安排)[ ]

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

  • 在一天中的任意时刻(可以精确到毫秒)。
  • 一周中特定的一些天。
  • 一个月中特定的一些天。
  • 一年中特定的一些天
  • 不在日历列表中注册的一些天(比如节假日)。
  • 循环特定的次数。
  • 循环到特定的时间。
  • 无限循环。
  • 按照一定的时间间隔循环。

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的功能。例如:记录任务执行历史的日志,或者从文件中载入任务和触发器的定义。

使用教程[ ]

最新动态[ ]

相关插件[ ]

相关条目[ ]

参考来源[ ]