Quartz的Misfire機制

Quartz是一個常用的Java定時任務類庫,其穩定性達到了工業級別,本文主要闡明其Misfire機制

Quartz的Misfire機制由以下兩項決定

  1. misfireThreshold 參數
  2. 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(立即啓動,不管丟失多少次,只啓動一次)


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章