在 Quartz 中,触发器(Trigger)和作业(Job)是两个核心概念。
- Job:Job 是一个接口,实现该接口的类就是一个 Quartz 作业。Job 接口有一个 execute 方法,Quartz 的作业调度程序会在触发器触发时调用这个方法。
- Trigger:触发器则是用来触发作业执行的。每个作业可以有多个触发器,但每个触发器只能对应一个作业。
关系:在 Quartz 中,Job 和 Trigger 被绑定在一起,当满足特定的时间条件时,Trigger 就会触发对应的 Job 执行。所以可以说,Trigger 负责定义调度时机,而 Job 负责执行具体的任务操作。
Trigger 包括两种类型:SimpleTrigger 和 CronTrigger,前者可以实现在一个指定时间段内重复执行,后者通过 Cron 表达式进行配置,可以实现复杂的调度需求。
注意:Trigger 和 Job 之间的关系是一对一或多对一,这意味着一个 Trigger 只能关联一个 Job,但是一个 Job 可以关联多个 Trigger。
以下是一个XML定义触发器和作业的示例。XML文件中的配置项将在Quartz启动时被加载。
<job-scheduling-data xmlns="http://www.quartz-scheduler.org/xml/JobSchedulingData"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.quartz-scheduler.org/xml/JobSchedulingData
http://www.quartz-scheduler.org/xml/job_scheduling_data_2_0.xsd"
version="1.8">
<schedule>
<job>
<name>myJob</name>
<group>myGroup</group>
<description>My Job Description</description>
<job-class>com.mycompany.MyJobClass</job-class>
</job>
<trigger>
<simple>
<name>mySimpleTrigger</name>
<group>myGroup</group>
<description>Simple Trigger Description</description>
<job-name>myJob</job-name>
<job-group>myGroup</job-group>
<misfire-instruction>SmartPolicy</misfire-instruction>
<repeat-count>10</repeat-count>
<repeat-interval>10000</repeat-interval>
</simple>
</trigger>
<trigger>
<cron>
<name>myCronTrigger</name>
<group>myGroup</group>
<description>Cron Trigger Description</description>
<job-name>myJob</job-name>
<job-group>myGroup</job-group>
<misfire-instruction>SmartPolicy</misfire-instruction>
<cron-expression>0/5 * * * * ?</cron-expression>
</cron>
</trigger>
</schedule>
</job-scheduling-data>
在这个例子中,我们首先定义了一个名为"myJob"的作业,并指定了其所属的组以及执行该作业的类。
然后,我们定义了两个触发器:一个简单触发器和一个Cron触发器。这两个触发器都指定了自己的名称、组、描述、关联的作业、失火指令以及调度规则。
对于简单触发器,我们用"repeat-count"和"repeat-interval"元素来设置重复次数和间隔;对于Cron触发器,我们用"cron-expression"元素来设置Cron表达式。
网友评论