麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

Quartz的misfire理解

2019-11-11 05:03:52
字體:
供稿:網(wǎng)友

misfire用于Trigger觸發(fā)時,線程池中沒有可用的線程或者調(diào)度器關(guān)閉了,此時這個Trigger變?yōu)閙isfire。當(dāng)下次調(diào)度器啟動或者有可以線程時,會檢查處于misfire狀態(tài)的Trigger。而misfire的狀態(tài)值決定了調(diào)度器如何處理這個Trigger。

最好的文檔是官方文檔。

以下轉(zhuǎn)自http://blog.sina.com.cn/s/blog_56d8ea900101eu45.html

只有一個線程、多個job

第一個job產(chǎn)生misfire(executeTime>Interval) 且是repeatForever 那么只會運行第一個job,后面所有job都無法運行第一個job產(chǎn)生misfire(executeTime>Interval) 且是withRepeatCount(N),默認(rèn)情況下(withMisfireHandlingInstructionNowWithExistingCount),第一個job執(zhí)行完后會執(zhí)行第二個job;但如果第二個job對應(yīng)的trigger設(shè)置為:withMisfireHandlingInstructionNextWithExistingCount 或者withMisfireHandlingInstructionNextWithRemainingCount那么第二個job永遠(yuǎn)也不會執(zhí)行,因為Schedule在一開始就計算好了每個Job的FinalTime(通過調(diào)用trigger的getFinalFireTime()方法可以得到),過了這個時間就不再執(zhí)行,但是如果開始執(zhí)行job2時還沒有超過它的FinalTime,系統(tǒng)也會執(zhí)行job2,但是最終得到的執(zhí)行次數(shù)將小于job2定義的withRepeatCountN個線程,M個job如果每個job都misfire(executeTime>Interval)且都是repeatForever,那么系統(tǒng)只會執(zhí)行前N個job,后面的job不會執(zhí)行如果到了執(zhí)行時間點前一任務(wù)還在執(zhí)行中,但是這時有空閑的線程,那么馬上又會執(zhí)行,這樣一來就會存在同一job被并行執(zhí)行;很多時候我們是禁止這樣的,為了禁止job在同一時間并行運行,需要在job類上加上標(biāo)簽:@DisallowConcurrentExecutionquartz有個全局的參數(shù)misfireThreshold設(shè)置可以允許的超時時間,超過了就不執(zhí)行,未超過就執(zhí)行。比如設(shè)置了misfireThreshold=30分鐘,如果一個任務(wù)定時在10:30執(zhí)行,但在10:29服務(wù)器掛了,在10:50啟動,雖然任務(wù)超時了21分鐘,但小于misfireThreshold,所以還是可以執(zhí)行。而如果服務(wù)器11:10才啟動,那就misfire了。對于周期性的任務(wù),如果有misfire的情況出現(xiàn),則會自動更新CronTrigger的時間周期默認(rèn)情況下會在當(dāng)前時間馬上執(zhí)行前一個被misfire的任務(wù)而如果設(shè)置MISFIRE_INSTRUCTION_DO_NOTHING,則不對misfire的任務(wù)做特殊處理,只從當(dāng)前時間之后的下一次正常調(diào)度時間開始執(zhí)行產(chǎn)生misfire的前提是:到了該觸發(fā)執(zhí)行時上一個執(zhí)行還未完成,且線程池中沒有空閑線程可以使用(或有空閑線程可以使用但job設(shè)置為@DisallowConcurrentExecution)且過期時間已經(jīng)超過misfireThreshold滿足以上條件就會觸發(fā)quartz的misfire; 如果產(chǎn)生misfire,quartz有多種處理策略:下面是各種不同triigger對應(yīng)的不同misfire策略CronTriggerwithMisfireHandlingInstructionDoNothing——不觸發(fā)立即執(zhí)行——等待下次Cron觸發(fā)頻率到達(dá)時刻開始按照Cron頻率依次執(zhí)行withMisfireHandlingInstructionIgnoreMisfires——以錯過的第一個頻率時間立刻開始執(zhí)行——重做錯過的所有頻率周期后——當(dāng)下一次觸發(fā)頻率發(fā)生時間大于當(dāng)前時間后,再按照正常的Cron頻率依次執(zhí)行withMisfireHandlingInstructionFireAndPRoceed(默認(rèn))——以當(dāng)前時間為觸發(fā)頻率立刻觸發(fā)一次執(zhí)行——然后按照Cron頻率依次執(zhí)行SimpleTriggerwithMisfireHandlingInstructionFireNow——以當(dāng)前時間為觸發(fā)頻率立即觸發(fā)執(zhí)行——執(zhí)行至FinalTIme的剩余周期次數(shù)——以調(diào)度或恢復(fù)調(diào)度的時刻為基準(zhǔn)的周期頻率,F(xiàn)inalTime根據(jù)剩余次數(shù)和當(dāng)前時間計算得到——調(diào)整后的FinalTime會略大于根據(jù)starttime計算的到的FinalTime值withMisfireHandlingInstructionIgnoreMisfires——以錯過的第一個頻率時間立刻開始執(zhí)行——重做錯過的所有頻率周期——當(dāng)下一次觸發(fā)頻率發(fā)生時間大于當(dāng)前時間以后,按照Interval的依次執(zhí)行剩下的頻率——共執(zhí)行RepeatCount+1次withMisfireHandlingInstructionNextWithExistingCount——不觸發(fā)立即執(zhí)行——等待下次觸發(fā)頻率周期時刻,執(zhí)行至FinalTime的剩余周期次數(shù)——以startTime為基準(zhǔn)計算周期頻率,并得到FinalTime——即使中間出現(xiàn)pause,resume以后保持FinalTime時間不變withMisfireHandlingInstructionNowWithExistingCount(默認(rèn))——以當(dāng)前時間為觸發(fā)頻率立即觸發(fā)執(zhí)行——執(zhí)行至FinalTIme的剩余周期次數(shù)——以調(diào)度或恢復(fù)調(diào)度的時刻為基準(zhǔn)的周期頻率,F(xiàn)inalTime根據(jù)剩余次數(shù)和當(dāng)前時間計算得到——調(diào)整后的FinalTime會略大于根據(jù)starttime計算的到的FinalTime值withMisfireHandlingInstructionNextWithRemainingCount——不觸發(fā)立即執(zhí)行——等待下次觸發(fā)頻率周期時刻,執(zhí)行至FinalTime的剩余周期次數(shù)——以startTime為基準(zhǔn)計算周期頻率,并得到FinalTime——即使中間出現(xiàn)pause,resume以后保持FinalTime時間不變withMisfireHandlingInstructionNowWithRemainingCount——以當(dāng)前時間為觸發(fā)頻率立即觸發(fā)執(zhí)行——執(zhí)行至FinalTIme的剩余周期次數(shù)——以調(diào)度或恢復(fù)調(diào)度的時刻為基準(zhǔn)的周期頻率,F(xiàn)inalTime根據(jù)剩余次數(shù)和當(dāng)前時間計算得到——調(diào)整后的FinalTime會略大于根據(jù)starttime計算的到的FinalTime值MISFIRE_INSTRUCTION_RESCHEDULE_NOW_WITH_REMAINING_REPEAT_COUNT——此指令導(dǎo)致trigger忘記原始設(shè)置的starttime和repeat-count——觸發(fā)器的repeat-count將被設(shè)置為剩余的次數(shù)——這樣會導(dǎo)致后面無法獲得原始設(shè)定的starttime和repeat-count值http://blog.sina.com.cn/s/blog_613904cc0101gajk.htmlhttp://my.oschina.net/chenleijava/blog/109904good:http://hedatou.com/archives/introduction_to_quartz.html上面的狀態(tài)和quartz-1.8.4 不符:http://www.ibm.com/developerworks/cn/opensource/os-cn-quartz/:cron狀態(tài):MISFIRE_INSTRUCTION_FIRE_ONCE_NOW:就是MISFIRE_INSTRUCTION_SMART_POLICYMISFIRE_INSTRUCTION_DO_NOTHINGsimple狀態(tài),MISFIRE_INSTRUCTION_SMART_POLICY依據(jù)不同的repeatCount會有不同的對應(yīng)結(jié)果:MISFIRE_INSTRUCTION_FIRE_NOW:MISFIRE_INSTRUCTION_RESCHEDULE_NEXT_WITH_REMAINING_COUNT:MISFIRE_INSTRUCTION_RESCHEDULE_NOW_WITH_EXISTING_REPEAT_COUNT:
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 国产精品视频一区二区三区四 | av电影直播 | 91美女视频在线观看 | 日本欧美在线播放 | 综合网日日天干夜夜久久 | av电影在线网 | 色天天综合网 | 日韩在线播放中文字幕 | 97超视频在线观看 | 天天草天天干天天射 | 免费在线观看成年人视频 | 欧美日韩国产一区二区三区在线观看 | 久久久久免费精品国产小说色大师 | 国产一级毛片在线看 | 久久不射电影 | 日本在线不卡一区二区 | 日本成人午夜视频 | 91看片在线观看视频 | 久久亚洲线观看视频 | 欧美人一级淫片a免费播放 久久久久久久久91 国产99久久久久久免费看 | 国产午夜亚洲精品午夜鲁丝片 | 久久免费视频1 | 精国产品一区二区三区四季综 | 狠狠干最新网址 | 欧美亚洲一级 | 久久九九热re6这里有精品 | 欧美精品成人一区二区在线观看 | 九九热精品免费 | 蝌蚪久久窝 | 黄色7777| 国产91丝袜在线播放 | 久久国产精品久久久久久电车 | 久久影院一区二区三区 | 国产成年免费视频 | 欧美色爱综合 | 色欧美视频 | 精品国产91久久久久久 | 日韩视频在线免费 | 成年性羞羞视频免费观看无限 | 欧美日韩手机在线观看 | 蜜桃久久一区二区三区 |