概述:
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框架有一个丰富的特征集。
一、监听器和插件
监听是你所创建的java类,当关键事件发生时会受到框架的回调。例如:当一个作业被调度、没有调度或触发器终止和不再打火时,可以通过设置来通知你的监听器。quartz框架包含了调度器监听、作业和触发器监听。你可以配置作业和触发器监听为全局监听或者是特定于作业和触发器的监听。
一旦你的一个具体监听被调用,你就能使用这个技术来做一些你想要在监听类里面做的事情。例如:你如果想要在每次作业完成时发送一个电子邮件,你可以将这个逻辑写进作业里面,也可以写进JobListener里面。写进JobListener的方式强制使用松耦合有利于设计上做得更好。
quartz插件是一个新的功能特性,无须修改quartz源码便可被创建和添加进quartz框架。它为想要扩展quartz框架有没有时间提交改变给quartz开发团队和等待新版本的开发人员而设计。
二、集群quartz应用:
quartz应用能被集群,是水平句群还是垂直集群取决于你自己的需要。集群提供以下好处:
①伸缩性
②高可用性
③负载均衡
quartz可以借助关系数据库和jdbc作业存储支持集群。
Terracotta扩展quartz提供集群功能而不需要数据库支持。
(Terracotta是一款由美国Terracotta公司开发的著名开源java集群平台。它在JVM与Java应用之间实现了一个专门处理集群功能的抽象层,以其特有的增量检测、智能定向传送、分布式协作、服务器镜像、分片等技术,允许用户在不改变现有系统代码的情况下实现单机Java应用向集群化应用的无缝迁移。使得用户可以专注于商业逻辑的开发,由Terracotta负责实现高性能、高可用性、高稳定性的企业级Java集群。
Terracotta公司在2009年收购了著名的Java开源缓存项目Ehcache以及java任务调度项目quartz。经过对该项目的深度整合,Terracotta推出了易用性更高的分布式缓存、分布式任务调度以及分布式Web Session等快捷解决方案,进一步方便了开发人员开发分布式Java应用。)
来源:oschina
链接:https://my.oschina.net/u/4294668/blog/3630340