Quartz介绍

          众所周知,Quartz是一个定时调度任务框架,很多大公司都用它来做开发,但是想去了解它的时候却发现网上很多中文的介绍或者教程都是比较老的了,有的还是1.5版本的,但是现在Quartz都已经出到2.2了(这是发表博客时候最新的版本),下面针对最新的Quartz做个介绍,也是最新版本的官方介绍,根据官方的介绍摘抄了些重要的介绍出来。



Quartz能为我们做什么

       如果您的应用程序有需要在给定的时间内发生的任务,或者如果您的系统有经常性的维护工作,那么Quartz可能是您的理想解决方案。
用Quartz的作业调度的例子:
1)驱使工作流程处理:作为一个新的订单,安排一个工作在精确的2小时内,将检查该订单的状态,并触发警告通知,如果订单确认消息尚未收到的订单,以及改变订单的状态“等待干预”。
2)系统维护:安排一个工作,把数据库的内容到一个XML文件,每个工作日(节假日除外的所有平日)11:30。
3)在应用程序中提供提醒服务。


Quartz运行环境

1)Quartz可以运行嵌入在另一个自由站立的应用
2)Quartz的实例化可以在一个应用服务器(或servlet容器),并参与分布式事务
3)Quartz可以运行作为一个独立的程序(自己的java虚拟机内),可通过RMI
4)Quartz可以实例化为一组独立的程序(与负载平衡和故障转移能力)执行的工作

作业调度

 工作计划在一个给定的触发器发生时运行。触发器可以组合以的条件创建:

1)在某一天的某个时间(毫秒)
2)在本周的某一天
3)在月的某一天
4)在一年的某一天
5)没有在注册的日历(如商务假期)中列出的某些日子
6)重复一个特定次数
7)重复,直到一个特定的时间/日期
8)无限重复
9)具有延迟间隔的重复

创建Job的时候可以指定Job的名称和组名。触发器也可以设置触发器的名称和设置所属组名,以方便地在调度程序中组织它们。Job可以添加到调度程序一次,但可以注册的多个触发器。在一个企业的java环境,工作可以作为一个分布式的一部分,他们的分布式(XA)事务。


定时任务执行

1)每一个 Quartz Job 必须有一个实现了 org.quartz.Job 接口的具体类。这个接口仅有一个要你在 Job 中实现的方法:execute()方法。
2)Job类的实例可以被Quartz实例化,或由您的应用程序的框架实例化。
3)启动Scheduler,当Job触发时,调度程序也会通知零个或多个java对象实现的接口joblistener和TriggerListener(Listener可以是简单的java对象,或EJB,JMS或出版商,等)
4)当工作完成后,他们返回JobCompletionCode 通知Scheduler成功或失败。
5)用户可以根据JobCompletionCode的返回知道结果的成功和失败,得到成功或失败后也可以做相应的处理,例如失败的时候让作业立即重新执行调度程序。


Job的持久性

1)Quartz的设计包括一个JobStore接口,可以实现对Job的存储提供了各种操作机制。
2)随着包括JDBCJobStore使用,所有Job和Trigger配置为“非易失性”,是通过JDBC存储在关系数据库中
3)随着包括 内存 jobstore使用,所有工作和触发器是存储在内存中,因此不存在程序执行之间的-但这不需要一个外部数据库的优势。

事务管理

Quartz可以参与JTA事务,通过使用JobStoreCMT的(JDBCJobStore的子类)。
Quartz可以管理JTA事务作业的执行各个步骤(开始和提交它们),因此由作业执行的工作JTA事务中自动发生。


集群

故障转移。
负载均衡。
Quartz内置的群集功能通过JDBCJobStore(如上所述)依赖于数据库的持久性。
Terracotta扩展Quartz提供无需后备数据库集群功能。


监听器和插件

应用程序可以通过实现一个或者多个接口,去捕捉监听Job/Trigger的执行。

通过添加插件,可以增加Quartz的功能,如保存历史Job的执行,或者从文件中加载Job和Trigger的定义












评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值