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

二. 与 Job 一同工作

本节为使用 Quartz 的 Job 提供了一些例子。

·创建一个新的 Job 类

创建一个新的 Job 类很简单。仅需创建一个类,让它实现 org.quartz.Job 接口即可。这个接口需要你实现 execute() 方法,它会在 Scheduler 决定 Job 要执行时被调用。

代码 12.4 演示了一个简单的 Job,它会为某个用户检查邮件服务器上是否有新的邮件。当 Scheduler 执行这个 Job 时,方法 execute() 被调用,然后其中的代码就会连接到邮件服务器并获取任何邮件消息。这一 Job 只简单的打印邮件是谁发的和邮件的主题。

代码 12.4. 一个检查邮件服务器上的邮件的 Quartz Job

代码 12.4 中大部分内部是使用 JavaMail API 访问邮件服务器的。就实现一个新的 Quartz Job 类来说,只有很少的事情要做。究其本质,就是要实现 Job 接口和 execute() 方法,然后为被部署准备就绪。这在下一个例子中有所显示。

硬编码之于向 Job 传参

在代码 12.4 中,邮件属性,如主机、用户名和密码是硬编码在 Job 类本身中。这称不上是个好主意。在本章后面部份,我们把 Job 修改为传参到 JobDataMap 中。

·部署 Quartz Job

如上个例子所演示的,要创建一个 Quartz Job 确实很直截的。幸运的是,通过 Scheduler 配置一个 Job 也不是很难。代码 12.5 展示的就是部署前面的 CheckEmailJob

代码 12.5. 显示了如何部署 CheckEmailJob 的例子

代码 12.5 中的内容先是从 StdSchedulerFactory 获得 Scheduler,然后启动它。接着为 CheckEmailJob 创建一个 JobDetail 和一个立即开始、每小时触发的 Trigger。

·触发 Job 一次

org.quartz.TriggerUtils 类是很方便的,包含有许多有用的方法。其中一个最有用的方法是能部署一个只立即触发一次的 Trigger。代码 12.6 演示了如何仅仅触发 CheckEmailJob 一次。

代码 12.6. 为 CheckEmailJob 使用仅触发一次的 Trigger

代码 12.6 中使用了 TriggerUtils 类的静态方法 makeImmediateTrigger(),并传递给 repeatCountrepeatInterval 这两个参数的值都是 0,也就使得这个 Trigger 仅触发一次。

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

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

Subscribe
Notify of
guest

1 Comment
Inline Feedbacks
View all comments
王能
15 years ago

http://www.bt285.cn 这个BT网站,与http://yaonba.com.cn NBA中文网job也是用quartZ