quartz job 与 trigger 之间的关系

本文深入解析Quartz作业调度系统中任务与触发器的绑定与管理机制,包括如何使用不同接口进行任务绑定、触发器的创建与调度,以及如何处理任务与触发器之间的绑定关系。重点讲解了Quartz如何自动设置触发器的JobName与JobGroup属性,以及如何避免重复绑定同一任务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

    JobDetail jobDetail = new JobDetail(jobName, jobGroup, class1.getClass());
    Trigger trigger3 = TriggerUtils.makeMinutelyTrigger("trigger2", 10, SimpleTrigger.REPEAT_INDEFINITELY);
    Trigger trigger4 = TriggerUtils.makeSecondlyTrigger("trigger1", 5000, SimpleTrigger.REPEAT_INDEFINITELY);

    // 下面这个接口其实可以理解为先addJob(JobDetail, false)
    // 再调用scheduleJob(Trigger), 此时Quartz会自动校正与设置trigger3的JobName与JobGroup属性
    scheduler.scheduleJob(jobDetail, trigger3);

    // 因为任务已在上一条语句中已加入, 所以不能再使用scheduleJob(JobDetail, Trigger)
    trigger4.setJobName(jobName);
    trigger4.setJobGroup(jobGroup);
    scheduler.scheduleJob(trigger4); // 看这里
  JobDetail jobDetail = new JobDetail(jobName, jobGroup, class1.getClass());
    Trigger trigger3 = TriggerUtils.makeMinutelyTrigger("trigger2", 10, SimpleTrigger.REPEAT_INDEFINITELY);
    Trigger trigger4 = TriggerUtils.makeSecondlyTrigger("trigger1", 5000, SimpleTrigger.REPEAT_INDEFINITELY);

    // 下面这个接口其实可以理解为先addJob(JobDetail, false)
    // 再调用scheduleJob(Trigger), 此时Quartz会自动校正与设置trigger3的JobName与JobGroup属性
    scheduler.scheduleJob(jobDetail, trigger3);

    // 因为任务已在上一条语句中已加入, 所以不能再使用scheduleJob(JobDetail, Trigger)
    trigger4.setJobName(jobName);
    trigger4.setJobGroup(jobGroup);
    scheduler.scheduleJob(trigger4); // 看这里

 

 总结: 

    每个任务JobDetail可以绑定多个Trigger,但一个Trigger只能绑定一个任务,这种绑定关系由四种接口来执行:

Scheduler#scheduleJob(JobDetail, Trigger)

    该接口的作用是在将任务加入Quartz的同时绑定一个Trigger,Quartz会在加入该任务后自动设置Trigger的JobName与JobGroup为该JobDetail的name与group; 

Scheduler#scheduleJob(Trigger)

 该接口的作用是将该Trigger绑定到其JobName与JobGroup指向的任务JobDetail。这时的name与group需要在Trigger绑定前由Quartz的使用者来设置与调用 

Scheduler#rescheduleJob(String, String, Trigger)

 

 

 替换一个指定的Trigger, 即解除指定Trigger与任务的绑定,并将新的Trigger与任务绑定,Quartz会自动调整新Trigger的JobName与JobGroup,而旧的Trigger将被移除 

Scheduler#triggerJob(String, String)

   创建一个立即触发的Trigger,并将其与name与group指定的任务绑定 

  JobDetail有个属性叫durable,表明该任务没有任何trigger绑定时仍保存在Quartz的JobStore中,默认为false。
    若JobDetail的durable属性为false,则任务将会从Quartz移除。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值