文章目錄
- 一、什么是MisFire
- 二、MisFire發生的情況
- 三、MisFire的補償策略
- 四、代碼實現
一、什么是MisFire
簡單理解為:定時任務,所錯過的觸發
二、MisFire發生的情況
1、資源緊張,定時任務請求不到對應的線程。
2、調度器關閉。
3、設置定時任務的開始時間早于啟動時間(沒有指定開始時間,則開始時間=啟動時間)。
三、MisFire的補償策略
四、代碼實現
public static CronScheduleBuilder handleCronScheduleMisfirePolicy(JobBean job, CronScheduleBuilder cb) throws Exception {switch (job.getMisfirePolicy()){case ScheduleConstants.MISFIRE_DEFAULT:return cb;case ScheduleConstants.MISFIRE_IGNORE_MISFIRES:return cb.withMisfireHandlingInstructionIgnoreMisfires();case ScheduleConstants.MISFIRE_FIRE_AND_PROCEED:return cb.withMisfireHandlingInstructionFireAndProceed();case ScheduleConstants.MISFIRE_DO_NOTHING:return cb.withMisfireHandlingInstructionDoNothing();default:throw new Exception();}}
/** 默認 */public static final String MISFIRE_DEFAULT = "0";/** 立即觸發執行 */public static final String MISFIRE_IGNORE_MISFIRES = "1";/** 觸發一次執行 */public static final String MISFIRE_FIRE_AND_PROCEED = "2";/** 不觸發立即執行 */public static final String MISFIRE_DO_NOTHING = "3";