概述: java
Quartzs OpenSymphony开源组织在Job scheduling领域有一个开源项目,它开源与将J2EE与将J2SE应用程序相结合也能够单独使用。Quartz开源用来建立简单或为运行是个,百个,甚至好几万个jobs这样复杂的程序。jobs能够作成标准的Java组件或EJBs。Quartz的最新版本为Quartz2.2.1。数据库
调度简单:缓存
quartz是一个彻底由java编写的开源做业调度框架。用法及其简单:简单地建立一个实现org.quartz.Job接口的java类。Job接口包含惟一的方法:服务器
public void excute(JobExecutionContext context) throws JobException{}多线程
在你的Job接口实现类里面,添加一些逻辑到execute()方法。一旦你设置好Job实现类并设定好调度时间表,quartz将密切注意剩余时间。当调度程序肯定该是通知你的时候,quartz框架将调用你Job实现类(做业类)上的execute()方法并容许作它该作的事情。无需报告任何东西给调度器或调用任何特定的东西。仅仅执行任务好结束任务便可。若是配置你的做业在随后再次被调用,quartz框架将在适当的时间再次调用它。架构
内部架构:并发
规模:大约300个java类和接口,并被组织到12个包中(Apache Struts把大约325个类和接口组织到11个包中)。负载均衡
调度器:框架
Quartz框架的核心是调度器。调度器负责管理quartz应用运行时环境。调度器不是靠本身作全部工做,而是依赖框架内一些很是重要的部件。quartz不单单是线程和线程管理。为确保可伸缩性,quartz采用了基于多线程的架构。启动时,架构初始化一套worker线程,这套线程被调度器用来执行预约的做业。这就是quartz怎样能并发运行多个做业的原理。quartz依赖一套松耦合的线程池管理部件来管理线程环境。分布式
框架特征:
quartz框架有一个丰富的特征集。
1、监听器和插件
监听是你所建立的java类,当关键事件发生时会受到框架的回调。例如:当一个做业被调度、没有调度或触发器终止和再也不打火时,能够经过设置来通知你的监听器。quartz框架包含了调度器监听、做业和触发器监听。你能够配置做业和触发器监听为全局监听或者是特定于做业和触发器的监听。
一旦你的一个具体监听被调用,你就能使用这个技术来作一些你想要在监听类里面作的事情。例如:你若是想要在每次做业完成时发送一个电子邮件,你能够将这个逻辑写进做业里面,也能够写进JobListener里面。写进JobListener的方式强制使用松耦合有利于设计上作得更好。
quartz插件是一个新的功能特性,无须修改quartz源码即可被建立和添加进quartz框架。它为想要扩展quartz框架有没有时间提交改变给quartz开发团队和等待新版本的开发人员而设计。
2、集群quartz应用:
quartz应用能被集群,是水平句群仍是垂直集群取决于你本身的须要。集群提供如下好处:
①伸缩性
②高可用性
③负载均衡
quartz能够借助关系数据库和jdbc做业存储支持集群。
Terracotta扩展quartz提供集群功能而不须要数据库支持。
(Terracotta是一款由美国Terracotta公司开发的著名开源java集群平台。它在JVM与Java应用之间实现了一个专门处理集群功能的抽象层,以其特有的增量检测、智能定向传送、分布式协做、服务器镜像、分片等技术,容许用户在不改变现有系统代码的状况下实现单机Java应用向集群化应用的无缝迁移。使得用户能够专一于商业逻辑的开发,由Terracotta负责实现高性能、高可用性、高稳定性的企业级Java集群。
Terracotta公司在2009年收购了著名的Java开源缓存项目Ehcache以及java任务调度项目quartz。通过对该项目的深度整合,Terracotta推出了易用性更高的分布式缓存、分布式任务调度以及分布式Web Session等快捷解决方案,进一步方便了开发人员开发分布式Java应用。)