调度简单
Quartz是一个彻底由java编写的开源做业调度框架。不要让做业调度这个术语吓着你。尽管Quartz框架整合了许多额外功能, 但就其简易形式看,你会发现它易用得简直让人受不了!。简单地建立一个实现
org.quartz.Job接口的java类。Job接口包含惟一的方法:
public void execute(JobExecutionContext context)
throws JobExecutionException;
在你的Job接口实现类里面,添加一些逻辑到execute()方法。
一旦你配置好Job实现类并设定好调度时间表,Quartz将密切注意剩余时间。当调度程序肯定该是通知你的做业的时候,Quartz框架将调用你Job实现类(做业类)上的execute()方法并容许作它该作的事情。无需报告任何东西给调度器或调用任何特定的东西。仅仅执行任务和结束任务便可。若是配置你的做业在随后再次被调用,Quartz框架将在恰当的时间再次调用它。
内部架构
在规模方面,Quartz跟大多数开源框架相似。
大约有300个java类和接口,并被组织到12个包中。
这能够和Apache Struts把大约325个类和接口以及组织到11个包中相比。尽管规模几乎不会用来做为衡量框架质量的一个特性,但这里的关键是quartz内含不少功能,这些功能和特性集是否成为、或者应该成为评判一个开源或非开源框架质量的因素。
调度器
Quartz框架的
核心是调度器。调度器
负责管理Quartz应用运行时环境。调度器不是靠本身作全部的工做,而是依赖框架内一些很是重要的部件。Quartz不只仅是线程和线程管理。为确保可伸缩性,Quartz采用了基于多线程的架构。启动时,框架初始化一套worker线程,这套线程被调度器用来执行预约的做业。这就是Quartz怎样能
并发运行多个做业的原理。Quartz依赖一套松耦合的
线程池管理部件来管理线程环境。本篇文章中,咱们会屡次提到线程池管理,但Quartz里面的每一个对象是可配置的或者是可定制的。因此,例如,若是你想要插进本身线程池管理设施,我猜你必定能!
框架特征
Quartz框架有一个丰富的特征集。事实上,Quartz有太多特性以至不能在一种状况中所有领会,下面列出了一些有意思的特征,但没时间在此详细讨论。
监听器和插件
每一个人都喜欢监听和插件。今天,几乎下载任何开源框架,你一定会发现支持这两个概念。
监听是你建立的java类,当关键事件发生时会收到框架的回调。例如,当一个做业被调度、没有调度或触发器终止和再也不触发时,这些均可以经过设置来通知你的监听器。Quartz框架包含了
调度器监听、做业和触发器监听。你能够配置做业和触发器监听为
全局监听或者是特定于做业和触发器的监听。
一旦你的一个具体监听被调用,你就能使用这个技术来作一些你想要在监听类里面作的事情。例如,你若是想要在每次做业完成时发送一个电子邮件,你能够将这个逻辑写进做业里面,也能够写进JobListener里面。写进JobListener的方式强制使用
松耦合有利于设计上作到更好。
Quartz插件是一个新的功能特性,无须修改Quartz源码即可被建立和添加进Quartz框架。他为想要扩展Quartz框架又没有时间提交改变给Quartz开发团队和等待新版本的开发人员而设计。若是你熟悉Struts
插件的话,那么彻底能够理解Quartz插件的使用。
与其Quartz提供一个不能知足你须要的有限扩展点,还不如经过使用插件来拥有可修整的扩展点。
集群Quartz应用
Quartz应用能被集群,是水平集群仍是垂直集群取决于你本身的须要。集群提供如下好处:
·伸缩性
·高可用性
·负载均衡
Quartz能够借助关系数据库和JDBC做业存储支持集群。
Terracotta扩展quartz提供集群功能而不须要数据库支持
相关工具
Quartz常常会用到cron表达式,可使用国外网站cronmaker辅助生成cron表达式。