关闭

Quartz Scheduler 起步

标签: Quartz SchedulerJava定时任务调度器石英
1275人阅读 评论(0) 收藏 举报
分类:

本文为官方文档之翻译,适用于Quartz Scheduler Version 2.2.1。

Quartz Scheduler 本文翻译为 石英调度器。

内容表(目录)

关于石英调度器

 什么是石英调度器

         石英调度器特性

安装和使用石英调度器

         下载和安装石英调度器

         配置石英调度器

         启动一个简单的程序

 

1关于石英调度器

n  什么是石英调度器

n  石英调度器特性

什么是石英调度器

石英调度器(Quartz Scheduler)是一种特性丰富、开源的任务调度程序库,可以在任何java程序中使用。石英调度器可以用来创建简单或者复杂的执行次数可以达成千上万的任务。任务可以是任何java可以做的事情。石英调度器也有很多企业级的特性,比如JTA(Java Transaction API,JTA允许应用程序执行分布式事务处理——在两个或多个网络计算机资源上访问并且更新数据。JDBC驱动程序的JTA支持极大地增强了数据访问能力。)。

石英调度器可以为你做什么

如果你的应用有任务需要在给定时间执行,或者你的系统需要定期执行某些任务,那么石英调度器就是你的理想选择。

石英调度器使用的例子:

驱动工作流进程:当一个新订单生成后,指定一个计划任务在2小时后触发,该任务将会检查订单状态,如果该订单信息没有被接收到,那么任务会发出一个警告的通知,并改变订单的状态为“等待介入”。

系统维护:每个商业日(及工作日,不包括各种假日)执行一个定时任务去备份数据库。

为一个程序提供提醒服务。

 

石英调度器特性

运行时环境:

可以嵌入其它独立的程序。

可以在服务程序(或者servlet container)中被初始化,并且参与XA事务。

也可以做独立的程序运行。

也可以作为独立程序的集群来被初始化(通过负载平衡和fail-over capabilities(不会翻))进而执行多任务。

 

任务调度:

当给定触发器被触发后相应的任务会被执行。触发器可以是以下任何指令的集合。

每天指定时间。

每周指定天。

每月指定天们(这里的天是复数)。

指定日期不执行。

重复执行指定次数

重复执行到指定时刻

无限期执行

重复执行,每次执行时有指定的间隔。

 

任务们会被他们的构造器指定名称,并且可以用指定名称的组们来组织。触发器也可以被指定名称并被放置入任务组中。以上做法是为了更方便调度器管理它们。任务只可以被加入调度器中一次,但是可以注册多个触发器。在企业级的java环境中,任务甚至可以在分布式环境中执行他们的事务。

 

任务执行

任务可以是任何实现了Job接口的java类。

Job类的实例,可是由Quartz来初始化,也可以由你的应用框架来初始化。

当一个触发器被触发后,调度器会通知一些java对象,这些对象必须实现 JobListener 和 TriggerListener 接口。这些接口在job被执行过后也会被通知到。

当任务结束后,调度器会返回一个任务结束码 ,这个码会表示执行是成功了还是失败了。通过这个码调度器也可以决定是否立即重新执行任务或者执行其它操作。

 

任务持久性

Quartz的设计包含了一个JobStore接口,它可以用来提供多种机制来保存任务。

通过使用JDBCJobStore,所有的任务和触发器可以非易失性的形式来存储在关系型数据库里。

通过使用RAMJobStore,所有的任务和触发器都可以存储在内存中,因此不能在两次程序执行中存在,但是这样的好处是不需要外部存储器。

 

事务

Quartz可以参与到JTA事务中,通过使用JobStoreCMT。

Quartz可以管理JTA事务。

 

集群特性

Provides fail-over.(不知道是啥)

提供负载均衡。

Quartz自有集群特性,在数据库持久保存的基础上。

Terracotta对Quartz的扩展,实现了一个集群能力,不需要终端数据库的支持。

 

监听器和组件

通过实现相应的接口,应用可以捕捉到调度器的事件。然后就可以显示或者控制任务/触发器的行为。

组建机制可以为Quartz提供附加的功能,比如保存执行历史,或者从文件中加载任务和触发器。

Quartz与很多组建和监听器通行。

 

2 安装和使用Quartz Scheduler

n  下载和安装

n  配置

n  一个例子

下载和安装

http://quartz-scheduler.org/downloads

这个地址去下载,下载完后解压即可,jar包什么的都在里面了。

 

Quartz JAR 文件

Lib里面的jar文件都是Quartz需要的,把他们全部搞到你的classpath下吧。

 

配置文件

配置文件名为quartz.properties。这个配置文件不是必须的。但是如果你需要使用超出基本功能的功能时,请使用它,它必须在你的classpath中。

War文件中,你可以把它放在WEB-INF/classes文件中。

 

配置石英调度器

要配置石英调度器,请把quartz.properties文件放置到你的classpath下。

在examples/ 目录里面有几个quartz.properties的例子。

下面的例子示范了配置文件的写法:

org.quartz.scheduler.instanceName = MyScheduler #指定了调度器名字
org.quartz.threadPool.threadCount = 3 #线程池最大线程数量
org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore #指定调度器使用ramjobstore的方式存储任务,及任务存储在内存中。

观看全部的配置文件说明请查看 Quar Scheduler Configuration Guide

 

一个例子

下面是一个完整的例子包括了启动调度器添加任务启动和关闭。

 

QuartzTest.java

导入的包

import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.impl.StdSchedulerFactory;
import static org.quartz.JobBuilder.*;
import static org.quartz.TriggerBuilder.*;
import static org.quartz.SimpleScheduleBuilder.*;

 

代码示例

Thread.sleep(60000).
// define the job and tie it to our HelloJob class
JobDetail job = newJob(HelloJob.class)
.withIdentity("job1", "group1")
.build();
// Trigger the job to run now, and then repeat every 40 seconds
Trigger trigger = newTrigger()
.withIdentity("trigger1", "group1")
.startNow()
.withSchedule(simpleSchedule()
.withIntervalInSeconds(40)
.repeatForever())
.build();
// Tell quartz to schedule the job using our trigger
scheduler.scheduleJob(job, trigger);

 

观看更多例子请移步 Quartz Scheduler Example Programs and CodeSamples


两个资源文件

quartz-2.2.1

http://download.csdn.net/detail/zhounanzhaode/8881313


getting start with quartz 原文

http://download.csdn.net/detail/zhounanzhaode/8881299


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:71919次
    • 积分:1172
    • 等级:
    • 排名:千里之外
    • 原创:18篇
    • 转载:41篇
    • 译文:14篇
    • 评论:2条
    文章分类
    最新评论