天天看點

Quartz任務排程(6)schedulerListener分版本超詳細解析schedulerListener源碼下載下傳

在我們的監聽器實作類中,這個類中需實作的方法很多,不需要的可以給出空實作,下面是一些常用的用法:

方法

說明

jobscheduled()

scheduler 在有新的 jobdetail 部署時調用此方法。

jobunscheduled()

scheduler 在有新的 jobdetail解除安裝時調用此方法

triggerfinalized()

當一個 trigger 來到了再也不會觸發的狀态時調用這個方法。除非這個 job 已設定成了持久性,否則它就會從 scheduler 中移除。

triggerspaused()

scheduler 調用這個方法是發生在一個 trigger 或 trigger 組被暫停時。假如是 trigger 組的話,triggername 參數将為 null。

triggersresumed()

scheduler 調用這個方法是發生成一個 trigger 或 trigger 組從暫停中恢複時。假如是 trigger 組的話,triggername 參數将為 null。

jobspaused()

當一個或一組 jobdetail 暫停時調用這個方法。

jobsresumed()

當一個或一組 job 從暫停上恢複時調用這個方法。假如是一個 job 組,jobname 參數将為 null。

schedulererror()

scheduler 的正常運作期間産生一個嚴重錯誤時調用這個方法。錯誤的類型會各式的,但是下面列舉了一些錯誤例子:初始化 job 類的問題,試圖去找到下一 trigger 的問題,jobstore 中重複的問題,資料存儲連接配接的問題。我們可以使用 schedulerexception 的 geterrorcode() 或者 getunderlyingexception() 方法或擷取到特定錯誤的更詳盡的資訊。

schedulershutdown()

scheduler 調用這個方法用來通知 schedulerlistener scheduler 将要被關閉。

下面是一個1.+版本執行個體配置:

下面是我們的測試方法,關于方法中沒提到的類的配置可參考我前面系列的文章。

運作方法,我們會看到:

一個新的任務被動态添加時執行————schedulerlistener中的方法被調用 任務被部署時被執行————schedulerlistener中的方法被調用 scheduler啟動時被執行————schedulerlistener中的方法被調用 trigger 被觸發了,此時job 上的 execute() 方法将要被執行 不否決job,正常執行 myjoblistener觸發對class tool.job.picknewsjob的開始執行的監聽工作,這裡可以完成任務前的一些資源準備工作或日志記錄 在13:53:18扒取新聞 在13:53:18根據文章的閱讀量和評論量來生成我們的最熱文章清單 myjoblistener觸發對class tool.job.picknewsjob結束執行的監聽工作,這裡可以進行資源銷毀工作或做一些新聞扒取結果的統計工作 trigger 被觸發并且完成了 job 的執行,此方法被調用 在13:53:20扒取新聞 任務完成了它的使命,光榮退休時被執行————schedulerlistener中的方法被調用 在13:53:21根據文章的閱讀量和評論量來生成我們的最熱文章清單

2.+版本與1.+版本的主要差別是新添加了一些方法,并将jobname,groupname參數對換成了jobkey等。

下面是配置執行個體:

在2.+版本中,我們通過以下方式注冊我們的監聽器:

其它測試代碼可參考我前面系列文章的,測試結果和之前1.+版本内容基本一緻