Trigger相关内容
上篇博文,博主介绍了Job的相关内容。本篇博文,博主将介绍Trigger相关的内容。
Trigger
Trigger是触发器的意思,它只定义Trigger相关属性的Get方法。一个Trigger只能关联一个Job,而一个Job可以关联到多个Trigger。
Triigger的相关接口如下:
- getKey,Trigger的唯一标识。
- getJobKey,关联Job的唯一标识。
- getStartTime,开始触发时间。
- getEndTime,结束触发时间。
- getNextFireTime,获取下一次触发时间。
- getFireTimeAfter,用于计算在某个时间点后的下一个触发事件。
- mayFireAgain,是否需要触发。触发器触发完成的时候,会调用这个方法判断是否需要再次触发。
- getMisfireInstruction,获取失火策略。失火策略是指Trigger没有在合适的时间点进行执行时,程序需要做出的反应,如立即重新执行,并且重复次数不变,
MutableTrigger
前面说到Trigger只是定义了相关属性的Get方法,并没有Set方法。而MutableTrigger接口则定义了相关属性的set方法,如setKey方法。
OperableTrigger
OperableTrigger接口从字面上来说时可操作的Trigger。也就是Trigger被QuartzSchedulerThread获取到之后,在不同情况下需要进行操作的接口。OperableTrigger的相关接口如下:
- computeFirstFireTime,计算第一次触发时间。
- triggered,trigger被触发时调用的方法。
- updateAfterMisfire,对应触发器失火后调用的方法。
- executionComplete,触发器本次触发完成时被调用的方法。
SimpleTriggerImpl
SimpleTriggerImpl 实现了OperableTrigger接口,SimpleTriggerImpl的属性如下所示:
- startTime,开始时间。
- endTime,结束时间。
- repeatCount,重复次数。
- repeatInterval,重复时间间隔。
- timesTriggered,Trigger被触发的次数。
ScheduleBuilder
ScheduleBuilder是时间表构造器,它用户构造出实现了MutableTrigger的对象。ScheduleBuilder的源码如下所示:
public abstract class ScheduleBuilder<T extends Trigger> {
protected abstract MutableTrigger build();
}
SimpleScheduleBuilder
SimpleScheduleBuilder是简单的时间表构造器,它会在build方法中返回SimpleTriggerImpl实例,因此它可以定义SimpleTriggerImpl的属性,如withRepeatCount,repeatForever就是修改repeatCount和repeatInterval属性。
TriggerBuilder
TriggerBuilder接口也是返回实现了MutableTrigger接口的对象,它内部还有一个
ScheduleBuilder的引用。TriggerBuilder只定义了通用的属性(也就是通用的骨架),如StartTime,EndTime和Key等属性。其它的可变属性则交给了对应的ScheduleBuilder实现类来设置。
什么是可变属性?
- 对于SimpleScheduleBuilder来说,它需要repeatCount和repeatInterval属性。
- 对于CornTriggerBuilder来说,它需要cronExpression属性。
博主微信公众号
<img src="https://gitee.com/chenhaogit/blogimages/raw/master/xsj/wzgzh-8cm.jpg" style="float:right"/>