Trigger相關內容
上篇博文,博主介紹了Job的相關內容。本篇博文,博主將介紹Trigger相關的內容。
Trigger
Trigger是觸發(fā)器的意思,它只定義Trigger相關屬性的Get方法。一個Trigger只能關聯(lián)一個Job,而一個Job可以關聯(lián)到多個Trigger。
Triigger的相關接口如下:
- getKey,Trigger的唯一標識。
- getJobKey,關聯(lián)Job的唯一標識。
- getStartTime,開始觸發(fā)時間。
- getEndTime,結束觸發(fā)時間。
- getNextFireTime,獲取下一次觸發(fā)時間。
- getFireTimeAfter,用于計算在某個時間點后的下一個觸發(fā)事件。
- mayFireAgain,是否需要觸發(fā)。觸發(fā)器觸發(fā)完成的時候,會調用這個方法判斷是否需要再次觸發(fā)。
- getMisfireInstruction,獲取失火策略。失火策略是指Trigger沒有在合適的時間點進行執(zhí)行時,程序需要做出的反應,如立即重新執(zhí)行,并且重復次數不變,
MutableTrigger
前面說到Trigger只是定義了相關屬性的Get方法,并沒有Set方法。而MutableTrigger接口則定義了相關屬性的set方法,如setKey方法。
OperableTrigger
OperableTrigger接口從字面上來說時可操作的Trigger。也就是Trigger被QuartzSchedulerThread獲取到之后,在不同情況下需要進行操作的接口。OperableTrigger的相關接口如下:
- computeFirstFireTime,計算第一次觸發(fā)時間。
- triggered,trigger被觸發(fā)時調用的方法。
- updateAfterMisfire,對應觸發(fā)器失火后調用的方法。
- executionComplete,觸發(fā)器本次觸發(fā)完成時被調用的方法。
SimpleTriggerImpl
SimpleTriggerImpl 實現了OperableTrigger接口,SimpleTriggerImpl的屬性如下所示:
- startTime,開始時間。
- endTime,結束時間。
- repeatCount,重復次數。
- repeatInterval,重復時間間隔。
- timesTriggered,Trigger被觸發(fā)的次數。
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"/>