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

错过的不管了,剩下的按正常执行。

 

posted @ 2018-04-08 22:02  西伯利亚的狼  阅读(898)  评论(1编辑  收藏