Quartz Trigger状态转换

在Quartz的框架中,Trigger可能是最重要的一个对象了。定时任务的调度,触发,都是通过对Trigger的操作来实现的。Quartz的所有表里面,光Trigger相关的表就占了一大半,从这一点也可以看出Trigger的重要地位。下面是2.21版本中的数据表:
在这里插入图片描述
Trigger按其类型不同,分作了SIMPLE、CRON、BLOB等类型,数据库中也有相应的表存储。除此之外,QRTZ_TRIGGERS和QRTZ_FIRED_TRIGGERS是两张存储Trigger调度状态的表。对于状态转换的掌握,有助于我们 更好的理解Quartz的调度机制。

要通过文字讲清Trigger状态转换很难,而一张好图胜过千言万语。下面是整理的Trgger状态转换图,为了更好的突出重点,避免增加复杂度,这里仅描述了正常流程下的默认状态转换,忽略掉了集群恢复(clusterRecover)和部分手动更改任务计划(例如调用removeJob(),resumeJob()等)导致的状态转换。
在这里插入图片描述
建议读者边对照这张图边翻看源码,可以达到事半功倍的效果。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Quartz是一个开源的作业调度框架,可以用来实现定时任务的调度和执行。它提供了很多的API和功能,其中一个重要的组件就是TriggerTrigger是用来触发一个Job的执行的组件,可以理解为定时器。当Trigger满足一定的条件时,就会触发对应的Job执行。 Quartz中的Trigger有很多种类型,比如SimpleTrigger、CronTrigger等等,每种Trigger都有自己的特点和用途。在Quartz中,我们可以监听Trigger状态变化,比如Trigger被触发、Trigger被暂停、Trigger被删除等等。通过监听Trigger状态变化,我们可以在某些特定的时刻执行一些操作,比如记录日志、发送通知等等。 要监听Trigger状态变化,我们需要实现Quartz提供的TriggerListener接口,该接口定义了一些回调方法,比如triggerFired、triggerPaused、triggerResumed等等。当Trigger状态发生变化时,Quartz会自动调用对应的回调方法,我们可以在回调方法中执行相应的操作。 下面是一个简单的Trigger监听器的示例代码: ```java public class MyTriggerListener implements TriggerListener { public String getName() { return "MyTriggerListener"; } public void triggerFired(Trigger trigger, JobExecutionContext context) { System.out.println("Trigger fired: " + trigger.getKey()); } public boolean vetoJobExecution(Trigger trigger, JobExecutionContext context) { return false; } public void triggerMisfired(Trigger trigger) { System.out.println("Trigger misfired: " + trigger.getKey()); } public void triggerComplete(Trigger trigger, JobExecutionContext context, Trigger.CompletedExecutionInstruction triggerInstructionCode) { System.out.println("Trigger completed: " + trigger.getKey()); } } ``` 在上面的代码中,我们实现了TriggerListener接口,并重写了其中的几个回调方法。getName方法返回该监听器的名称,triggerFired方法在Trigger被触发时被调用,triggerMisfired方法在Trigger错过触发时被调用,triggerComplete方法在Trigger完成后被调用。在每个回调方法中,我们可以实现自己的逻辑。最后,我们需要将该监听器注册到Quartz的Scheduler中: ```java scheduler.getListenerManager().addTriggerListener(new MyTriggerListener()); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值