Quartz:强大的任务调度库

Quartz是开源的任务调度Java库。功能丰富,可以集成到小到单机应用,大到电子商务系统的任何Java应用中。

quartz-scheduler

Quartz能做什么?

如果应用需要在某一个时刻执行一个任务,或者系统需要经常性进行的维护工作,那么Quartz是不错的解决方案。 使用任务调度的例子:

  • 驱动工作流进程:一个新订单初始化后,制定一个2小时后触发的任务,检查订单状态。如果没有收到订单确认消息,则触发一个警告通知,同时改变订单状态。
  • 系统维护:制定一个每天将数据库内容转存为xml文件的任务,每天晚上11:30执行。
  • 应用中的提醒服务。

主要功能

运行时环境

  • Quartz可以嵌入到任何独立应用中运行。
  • Quartz可以在一个应用服务器(或servlet容器)实例化,及参与XA事务。
  • Quartz可以作为一个独立的程序运行(在自带的JVM中),并通过RMI使用。
  • Quartz可以实例化为一组独立的程序(通过负载均衡和故障转移能力)执行Job。

Job调度

当给定的触发器触发Job就会执行,触发器可以通过以下指令的任意组合创建:

  • 一天中的某个时刻(精确到毫秒)
  • 一周中的几天
  • 一个月中的几天
  • 一年中的几天
  • 日历中的特定时间(例如商务假期)
  • 重复特定次数
  • 不断重复直到特定的时间/日期
  • 无限重复
  • 延时重复

Job执行

  • Job是实现了简单Job接口的任何Java类。
  • Job类实例可以由Quartz或者你的应用框架实例化。
  • 当触发器触发,调度程序通知0个或多个实现了JobListener和TriggerListener接口的Java对象(监听器可以是普通Java类、EJB、JMS等)。
  • 当作业完成,返回一个JobCompletionCode通知调度成功或失败。

Job持久化

  • Quartz包括JobStore接口可以实现作业存储的各种机制。
  • 使用JDBCJobStore,所有的作业和触发器配置都通过JDBC存储在关系型数据库中,所以都是“非易失性”。
  • 使用RAMJobStore,所有的作业和触发器存在内存中。

事务

  • 通过使用JobStoreCMT(JDBCJobStore的子类),Quartz可以加入JTA事务。
  • Quartz可以作业执行中管理JTA事务(开始和提交),所以JTA事务中Job会自动执行。

集群功能

  • 故障转移。
  • 负载均衡。
  • Quartz内置的集群功能依赖JDBCJobStore实现数据库持久化。
  • Terracotta对Quartz提供了不需要后端数据库的集群能力。

监听器和插件

  • 应用可以通过实现一个或多个监听器接口捕获调度事件用于监控job/trigger的行为。
  • 插件机制用于向Quartz添加功能,如保存job执行的历史,或从文件加载job和trigger。
  • Quartz附带了许多“factory built”插件和监听器。

开发文档

官方网站:http://www.quartz-scheduler.org/
开源地址:http://svn.terracotta.org/svn/quartz/

打赏支持我整理更多优质资源,谢谢!

打赏编辑

打赏支持我整理更多优质资源,谢谢!

任选一种支付方式

3 2 收藏

资源整理者简介:刘立华

java开发,技术爱好者,乐于助人。 个人主页 · 贡献了32个资源 · 1 ·  


直接登录

推荐关注

按分类快速查找

关于资源导航
  • 伯乐在线资源导航收录优秀的工具资源。内容覆盖开发、设计、产品和管理等IT互联网行业相关的领域。目前已经收录 1439 项工具资源。
    推送伯乐头条热点内容微信号:jobbole 分享干货的技术类微信号:iProgrammer