Quartz Job Scheduling Framework[翻译]第十二章. Quartz Cookbook (第一部分)

第十二章. 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 设置来决定处理。

本文链接 https://yanbin.blog/quartz-job-scheduling-framework-12-1/, 来自 隔叶黄莺 Yanbin Blog

[版权声明] Creative Commons License 本文采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可。

Subscribe
Notify of
guest

2 Comments
Inline Feedbacks
View all comments
王能
16 years ago

http://www.bt285.cn

BT285.cn 这样的BT网站老是job死掉,不知道是什么原因啊.

隔叶黄莺
16 years ago

看看线程数配置的够不够多,默认为10个,少则有可以任务无限积压,进程未结束,但总是不执行任何 Job。

请不要发广告。