您的位置:首页 > 其它

Quartz的Misfire机制

2016-05-09 16:04 204 查看

Quartz是一个常用的Java定时任务类库,其稳定性达到了工业级别,本文主要阐明其Misfire机制

Quartz的Misfire机制由以下两项决定

misfireThreshold 参数

trigger的misfire 策略

接下来详细阐明:

当系统由于某种原因(未启动或是没有可用线程)在预定时刻没有启动任务,之后当系统可以调度该任务时(系统启动或是取得了可用线程),会首先检查当前时刻与预定时刻的差值,如果小于等于misfireThreshold值(该参数缺省为60秒),则不认为发生Misfire,并立刻启动该任务,一切正常进行。

如果大于misfireThreshold值,则认为发生了misfire,此时的行为由trigger的Misfire Instructions来决定。而不同类型的trigger的缺省Misfire Instructions是不同的,具体可以查看trigger的updateAfterMisfire()函数。

对于典型的trigger:

SimpleTrigger 缺省Misfire指令MISFIRE_INSTRUCTION_RESCHEDULE_NOW_WITH_EXISTING_REPEAT_COUNT(立即启动,丢失多少次,启动多少次)

CronTrigger 缺省Misfire指令MISFIRE_INSTRUCTION_FIRE_NOW(立即启动,不管丢失多少次,只启动一次)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: