第九章:JobStores
JobStore负责记录你提供到调度器的所有“工作数据”:所有的Job、所有的Trigger、所有的Calendar(org.quartz.Calendar)等等。为你的Quartz调度器选择一个合适的JobStore是一个重要的步骤。幸运的是,一旦你明白不同的JobStore之间的差异,那么作出合适的选择是十分简单的。
你声明你提供给用于生成调度器实例对应的SchedulerFactory实例时候用到的属性文件(或对象)中,应该指定你的调度器应使用哪个类型的JobStore(以及它的相关配置)。注意一点:
切勿在代码中直接使用JobStore实例。由于某些原因,许多使用者试图这样做。Jo ...
第八章:Scheduler监听器
SchedulerListener和TriggerListener或JobListener十分相似,它接收调度器的相关事件,调度器的相关事件不一定和特定的Trigger或者Job相关。
与Scheduler相关的事件包括:添加Job/Trigger、删除Job/Trigger、调度器中的严重错误以及关闭调度器的通知等等。
org.quartz.SchedulerListener接口:
public interface SchedulerListener { public void jobScheduled(Trigger trigger); public void j ...
第七章:Trigger监听器和Job监听器
监听器(listener)是你创建的对象,主要作用是接收和处理调度器回调的事件(event)。TriggerListener接收到与触发器(Trigger)相关的事件,JobListener接收与调度任务(Job)相关的事件。
与触发器相关的事件包括:触发器正要触发,触发器错失触发,触发器触发完成(调度任务已被触发开始执行,触发器完成当次触发)。
org.quartz.TriggerListener接口:
public interface TriggerListener { public String getName(); public void triggerFir ...
第六章:CronTrigger
CronTrigger通常比SimpleTrigger更有用,如果你需要一个基于类似日历的概念重复出现的工作调度计划,而不是SimpleTrigger的精确指定时间间隔。使用CronTrigger,你可以指定任务触发的时间表,例如“每周五中午”或“每个工作日和上午9:30”,甚至“每周一至周五上午9:00至10点之间每5分钟”和1月份的星期五”。即使如此,和SimpleTrigger一样,CronTrigger有一个startTime,它指定何时生效,以及一个(可选的)endTime,用于指定何时停止任务调度。
Cron表达式Cron-Expressions用于配置CronTrigger的 ...
第五章:SimpleTrigger
SimpleTrigger可以满足的调度需求是:在具体的时间点执行一次,或者在具体的时间点执行并且以指定的间隔重复执行若干次(其实永远重复也可以)。比如,你有一个Trigger,你可以设置它在2015年1月13日的上午11:23:54准时触发,或者在当前这个时间点触发,并且每隔2秒触发一次,一共重复5次。
根据描述,你可能已经发现了,SimpleTrigger的属性包括:开始时间、结束时间、重复次数以及重复的间隔。这些属性的含义与你所期望的是一致的,只是关于结束时间有一些地方需要注意。
重复次数,可以是0、正整数,以及常量SimpleTrigger.REPEAT_INDEFINITELY( ...
第四章:关于Trigger的更多细节
与Job一样,Trigger也很容易使用,但是还有一些扩展选项需要理解,以便更好地使用Qartz。Trigger也有很多类型,我们可以根据实际需要来选择。
最常用的两种Trigger会分别在第五章:SimpleTrigger和第六章:CronTrigger中讲到。
Trigger的公共属性所有类型的Trigger都有TriggerKey这个属性,表示Trigger的身份(唯一标识);除此之外,Trigger还有很多其它的公共属性。这些属性,在构建Trigger的时候可以通过TriggerBuilder设置。Trigger的公共属性有:
jobKey属性:当Trigger触发时被执行的Jo ...
第三章:Job和JobDetail的更多细节
正如你在第二章:Quartz API、调度任务以及触发器看到的,org.quartz.Job很容易实现,在接口中只有一个execute方法。本节主要关注:Job的特点、Job接口的execute方法以及JobDetail。
你定义了一个实现Job接口的类,这个类仅仅表明该Job需要完成什么类型的任务,除此之外,Quartz还需要知道该Job实例所包含的属性;这将由JobDetail类来完成。
JobDetail实例是通过JobBuilder类创建的,导入该类下的所有静态方法,会让你编码时有DSL的感觉:
import static org.quartz.JobBuilder.*;
让我们 ...
第一章:使用Quartz
内容在使用此调度器(Scheduler)之前,它需要被实例化(谁猜到这一点了? <– 这里估计是官方的调皮)。为了实例化调度器,你需要用到SchedulerFactory。一些Quartz的使用者可能会在JNDI存储中保留SchedulerFactory的实例,其他使用者可能会觉得直接初始化会更加简单(例如下面的示例)。
一旦调度器完成了实例化,就可以启动(start)、暂停(stand-by)、停止(shutdown)。注意:一旦调度器被停止,它就不能够重新启动,除非重新实例化另一个调度器实例。所有的触发器(Trigger)不会触发任务(也就是任务不会执行),除非调度器已经启动。但 ...
第二章:Quartz API、调度任务以及触发器
Quartz API下面是Quartz API中的关键接口:
Scheduler:与调度器交互的主要API(实际上这个就是调度器)。
Job:org.quartz.Job,希望由调度器执行的组件,是一个接口,也就是我们使用的时候被调度的任务需要实现此接口。
JobDetail:org.quartz.JobDetail,调度任务详情,用于定义调度任务。
Trigger:org.quartz.Trigger,也就是触发器,它是一个定义了给定调度任务将被执行的时间表的组件。
JobBuilder:org.quartz.JobBuilder,用于定义或者构建JobDetail实例。
TriggerB ...
Quartz官方文档翻译
Quartz官方文档翻译2018年5月的时候,因为要理解Quartz的相关东西,当时翻阅过它的文档顺便把它翻译了出来,已经忘记了这个事,好在存档还在硬盘上。其中有部分章节为了节省时间使用了机翻然后人工润色,目前阅读起来应该没有障碍。
这段时间太忙(996,快ICU了),先对基础教程部分重新排版和二次润色,剩下的其他文档有空再补一下。
术语:
Scheduler:调度器。
SchedulerFactory:调度器工厂。
Trigger:触发器。
Job:(调度)任务或者作业,在Quartz中体现为JobDetail。
在后面的翻译中,因为个人习惯,可能会中英互用,映射关系为:
Schedu ...