隔叶黄莺 The Blog of Unmi

〖隔叶黄莺三四声,挂壁飞瀑千万尘。若是人间无净土,此处为何妙语真! 隔叶黄莺四字,本非取自此句,而有寄寓他意,因见妙语,亦与予心合!〗

BlogJava 首页 新随笔 联系 聚合 管理
  380 Posts :: 106 Stories :: 1178 Comments :: 0 Trackbacks
第十二章. Quartz Cookbook

本章的目的是为在构建 Quartz 应用时常遇到的情形提供一系列的例子和解决方案。本章也可作为对本书剩余部分的一个参考和补充。

一. 与 Scheduler 一同工作

本节提供了使用 Quartz Scheduler 管理功能的几个例子。

·创建和启动 Scheduler

你能通过几种方式来启动 Quartz Scheduler,但是最简单的方式是使用两种 SchedulerFactory 实现中的一个。特别的,org.quartz.impl.stdSchedulerFactory 使用很简单,要执行对 Scheduler 的所有设置工作只需要调用 getDefaultScheduler() 这一静态方法即可,如代码 12.1 所演示的那般。

代码 12.1. 启动默认的 Scheduler



当你从这个工厂中取得了一个 Scheduler 的实例后,你就可以启动它,并往其中加入需要的 Job 和 Trigger。你既可在 Scheduler 启动之前,也可以在 Scheduler 启动之后加入 Job 和 Trigger。

Quartz 框架支持多个配置文件,这就允许你创建不同版本的 Scheduler。举个例子说,某个版本的配置文件设置了 Scheduler 作为单个实例使用 RAMJobStore,而同时,另一配置文件可配置 Cheduler 作为集群的一部分并使用某种 JDBCJobStore

要指定一个配置文件而不用默认配置文件,你可用 StdSchedulerFactory 的 initialize() 方法并指定一个配置文件名作为参数。代码 12.2 描绘了这个例子。

代码 12.2. 使用一个不同 Quartz 配置文件来启动 Scheduler



装入 Job 到 Scheduler 中

上面这些例子启动了 Scheduler 但是没有往其中加入任何 Job。你可以首先启动 Scheduler,接着加入你的 Job,或者你也可以选择先加入 Job 然后再启动 Scheduler。两种方式都能工作的很好。本章接下来的部分,我们会有一些采用了两种方式的例子。

·停止 Scheduler

Scheduler API 包含有两个版本的 shutdown() 方法。其中一个带有一个布尔型参数,另一个没有参数。这一布尔型参数告诉 Scheduler 是否等待正在执行的 Job 执行完成。

使用无参版的方法相当于是传递了 false 给另一个方法。假如你对停止当前正在执行的 Job 并不在意,那就调用这个:

scheduler.shudown();

否则,就用这个:

scheduler.shutdown(false);

另一方面,如果你希望在 Scheduler 停止之前完成正在执行的 Job,就传递 trueshudown() 方法:

scheduler.shutdown(true);

·暂停 Scheduler (Standby 模式)

要临时停止触发任何 Trigger,你可以调用 Scheduler 的 standby() 方法。Scheduler 和它的资源并不被销毁,并且 Scheduler 能在任何时候被重启。代码 12.3 展示了一个使用 standby() 方法的例子。

代码 12.3. 使 Scheduler 转入到 Standby 模式


当一个 Scheduler 被置为 standby 模式,已部署的 Trigger 将不被触发。而当 Scheduler 在使用了 start() 方法重新启动之后,所有的已被触发 Trigger 将依据 misfire 设置来决定处理。


[版权声明]
本站内文章,如未特别注明,均系原创或翻译之作,本人 Unmi 保留一切权利。本站原创及译作未经本人许可,不得用于商业用途及传统媒体。网络媒体可随意转载,或以此为基础进行演译,但务必以链接形式注明原始出处和作者信息,否则属于侵权行为。另对本站转载他处文章,俱有说明,如有侵权请联系本人,本人将会在第一时间删除侵权文章。及此说明,重之之重。
posted on 2008-04-05 01:52 隔叶黄莺 阅读(1783) 评论(2)  编辑  收藏 所属分类: Quartz

Feedback

# re: Quartz Job Scheduling Framework[翻译]第十二章. Quartz Cookbook (第一部分) 2008-04-05 09:59 王能
http://www.bt285.cn
BT285.cn 这样的BT网站老是job死掉,不知道是什么原因啊.  回复  更多评论
  

# re: Quartz Job Scheduling Framework[翻译]第十二章. Quartz Cookbook (第一部分) 2008-04-05 12:21 隔叶黄莺
看看线程数配置的够不够多,默认为10个,少则有可以任务无限积压,进程未结束,但总是不执行任何 Job。

请不要发广告。  回复  更多评论
  



标题  
姓名  
主页
验证码 *  
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2008-08-21 12:56 编辑过