Quartz.Net—MisFire
什么是misfire
misfire就是哑火,就是trigger没有得到正常的触发。
1、所有的threadpool都在工作,而且工作时间很长,导致trigger没有threadpool去执行。
2、schedule挂掉有恢复。。
3、错过的执行
misfire阈值
1、ramjobstore 默认 5秒
2、dbjobstore 默认 60秒
MisFire策略
1、错过的执行,发上执行,后面的调度正常执行。
2、错过的合并执行一次,后面的正常执行
3、忽略这种调度,后面的正常执行
上面三点是核心策略
SimpleTrigger处理哑火
场景:
1am开始执行,每小时执行一次,连续执行10次。但是开始时间是3点半。
已经错过了三次执行。
关键词介绍:
remain:剩余 剩余多少次
Exist:存在 一共多少次
Now:马上开始
Next:下一个时间点 开始
NowWithRemainingCount:马上开始 使用剩余的次数
NowWithExistingCount:马上开始 使用总次数
NextWithRemainingCount:下一个时间点开始 使用剩余次数
NextWithExistingCount:下一个时间点开始 使用总次数
方法介绍
1、WithMisfireHandlingInstructionNextWithExistingCount
下一次执行时间是4点,然后连续执行10次,到14点。
4:00 +10次 =14:00
2、WithMisfireHandlingInstructionNextWithRemainingCount
4:00 +7次 =11:00
3、WithMisfireHandlingInstructionNowWithExistingCount
3:30 +10次 =13:30
4、WithMisfireHandlingInstructionNowWithRemainingCount
3:30 +7次 =10:30
5、WithMisfireHandlingInstructionIgnoreMisfires
错过的执行,都会 马上执行,后面的调度正常执行。
6、WithMisfireHandlingInstructionFireNow
现在马上执行,原来错过的不执行。
CronTrigger处理哑火
1、WithMisfireHandlingInstructionIgnoreMisfires
错过的马上执行掉,后续正常执行
2、WithMisfireHandlingInstructionFireAndProceed
错过的合并为一次执行,后续正常执行。
3、WithMisfireHandlingInstructionDoNothing
错过的不管了,剩下的按正常执行。