一、什么是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";
7431

被折叠的 条评论
为什么被折叠?



