文章目录
- 一、什么是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";