美文网首页
quartz 触发器trigger和job的关系

quartz 触发器trigger和job的关系

作者: 饱饱想要灵感 | 来源:发表于2023-11-16 11:23 被阅读0次

    在 Quartz 中,触发器(Trigger)和作业(Job)是两个核心概念。

    1. Job:Job 是一个接口,实现该接口的类就是一个 Quartz 作业。Job 接口有一个 execute 方法,Quartz 的作业调度程序会在触发器触发时调用这个方法。
    2. 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表达式。

    相关文章

      网友评论

          本文标题:quartz 触发器trigger和job的关系

          本文链接:https://www.haomeiwen.com/subject/ooiewdtx.html