1、What's Quartz Scheduler
Quartz任务调试是一个具有丰富特色、并且开源的一个调试库,它可以集成在任何Java平台的虚拟机中,包括最小的独立的Java程序和最大的企业级应用。Quartz可以被用来创建一个简单的或者是十个、百个甚至成万个任务组成的复杂调度程序。Quartz包含了许多企业级应用特色,如:JTA事务和聚集。
1.1 What Can Quartz Do For You?
如果你的应用需要在几分钟后执行一个任务或者你的系统要重复做一些维护工作,你可以用Quartz来解决这些问题。
Sample uses of job scheduling with Quartz:
- 驱动工作流:刚下一个订单,并为这个订单添加一个在2小时后检查订单状态的调试工作,它将会检查订单状态,如果订单确认消息尚未收到订单则并触发一个警告通知,以改变订单的状态为“等待下单”。
- 系统维护:安排工作给数据库的内容在每个工作日(节假日除外平日)在下午11:30转储到XML文件。
- 在应用程序中提供了提醒服务。
2、Quartz 特性
2.1 运行环境
- Quartz可以运行嵌入在另一个独立式应用程序
- Quartz可以在应用程序服务器(或servlet容器)内被实例化,并且参与XA事务
- Quartz可以作为一个独立的程序运行(它自己的Java虚拟机内),要通过RMI使用
- Quartz可以作为实例的独立程序集群(带负载均衡和故障转移功能),用于作业的执行
2.2 任务调试
给定的触发器来触发调试任务的运行。触发器可以通过下面的指令来组合创建:
- 在一天中的某个时间(精确到毫秒)
- 一周的某几天
- 一年中的某几天
- 节假日除外的某一天
- 重复特定次数
- 不断重复直到一个特定的时间或日期
- 无限重复
- 重复一个延迟间隔
任务创建时,指定了一个任务名,也可以组织成一个组名。触发器也可以给予名称或放置在组中,以方便在调试的时候组织它们。任务只能在调度中添加一次,但是可以注册多个触发器。在企业Java环境中,任务可以作为分步式(XA)事务的一部分来执行它们的工作。
2.3 任务执行
- 任务可以实现简单的工作界面,留下无限的可能性为您的工作可以执行工作的任何Java类。
- 任务类可以被Quartz或者应用框架实例化
- 当触发事件时,调度通知执行实现了JobListener和TriggerListener接口的零个或多个Java对象(监听器可以是简单的Java对象,或EJB,JMS等)。这些监听器也会在任务执行后接收通知。
- 任务完成后,会返回一个JobCompletionCode 来通知任务执行是成功或失败。该JobCompletionCode 还可以在返回成功或失败的基础上,指示调试任务做一个行动——如立即重新执行任务。