quartz的中斷恢復處理

2021-08-26 00:18:54 字數 673 閱讀 3943

使用jobstore來處理程式中斷後的恢復

先看下幾個處理時間點上的表狀態

生成任務時會往job_details和triggers表插資料(這兩個表關聯的其它詳細表就不多說了)

如果job還沒開始執行時程式就中斷了,

下次程式啟動時會判斷當前時間-預計執行時間是否小於misfirethreshold,是則正常執行,否則不執行了

如果是執行過程中中斷呢?

job執行中時會往fired_triggers表插資料

如果這時程式中斷,而job又設定了requestsrecovery為true,則該job會被重新執行(不受misfirethreshold影響,因為根本就不是misfire)。

可以通過jobexecutioncontext.isrecovering()來判斷是否是recover,因為很多時候恢復的任務要先做一些清理工作。

如果requestsrecovery為false,則不會恢復執行。

另外還有一點要注意,如果job設定了listener,則在jobwa***ecuted執行完成後,任務相關的資訊才會被從資料庫裡刪除,表示真正執行完成。

如果job的execute執行完了,但在listener的jobwa***ecuted()裡程式出錯或中斷的話,quartz記錄的任務狀態還是執行中,下次任務還是會被恢復(requestsrecovery=true)。

arm中斷保護和恢復 ARM的中斷處理 一

前面的文章介紹了linux的中斷處理機制,而作業系統的中斷處理是和硬體的中斷控制器緊密相關的,本文將以arm這樣乙個具體的處理器為例,講解硬體層面對中斷的支援。arm的中斷控制器被稱為gic generic interrupt controller 最開始的v1版本最多支援8個pe和1020個中斷源...

arm中斷保護和恢復 ARM中斷異常處理的返回

舉個小例子,下面是一段arm彙編 0x3000bl add 0x3004mov r0,0 0x3008mov r1,1 0x300cmov r2,2 area test,code,readonly entry start mov r0,1 mov r1,1 bl add mov r0,0 mov r...

arm中斷保護和恢復 ARM中斷異常處理的返回

舉個小例子,下面是一段arm彙編 位址指令 0x3000 bl add 0x3004 mov r0,0 0x3008 mov r1,1 0x300c mov r2,2 area test,code,readonly entry start mov r0,1 mov r1,1 bl add mov r...