Quartz调度器学习--基本概念
1,觸發(fā)器有一個startTime 和 endTime 屬性,startTime 規(guī)定Trigger何時生效,endTime規(guī)定Trigger何時失效。
2,Trigger的優(yōu)先級:Quartz管理著一個線程池,用來進行作業(yè)的執(zhí)行。當可用線程數(shù)目少于目前待調度的作業(yè)數(shù)目時,哪個作業(yè)的Trigger優(yōu)先級高,該作業(yè)就會優(yōu)先分配 work thread 執(zhí)行。當然,作業(yè)的Trigger優(yōu)先級的比較只在具有相同調度時間的作業(yè)之間比較,如所有10點鐘執(zhí)行的作業(yè);而9點鐘執(zhí)行的作業(yè)的Trigger優(yōu)先級盡管低于10點鐘作業(yè)的Trigger優(yōu)先級。顯然,9點鐘的作業(yè)還是先執(zhí)行的。
?
3,Misfire Instructions----錯過作業(yè)觸發(fā)時機時怎么辦?
Quartz中有一個默認的處理機制--"smart policy"機制。同時,你也可以在為作業(yè)配置Triggers時,明確指定作業(yè)的misfire instructions。當使用“smart policy”機制時,對于SimpleTrigger而言,它會動態(tài)地選擇一個合適的觸發(fā)機制,SimpleTrigger.updateAfterMisfire()方法解釋了此種情況下如何觸發(fā)作業(yè)。
SimpleTrigger以常量的形式預定義了一些觸發(fā)機制,這些機制如下:
MISFIRE_INSTRUCTION_IGNORE_MISFIRE_POLICY MISFIRE_INSTRUCTION_FIRE_NOW MISFIRE_INSTRUCTION_RESCHEDULE_NOW_WITH_EXISTING_REPEAT_COUNT MISFIRE_INSTRUCTION_RESCHEDULE_NOW_WITH_REMAINING_REPEAT_COUNT MISFIRE_INSTRUCTION_RESCHEDULE_NEXT_WITH_REMAINING_COUNT MISFIRE_INSTRUCTION_RESCHEDULE_NEXT_WITH_EXISTING_COUNT?
4,Quartz提供了一個Calendar對象(不是java.util.Calendar)來更加精細化地設置作業(yè)的觸發(fā)條件。Calendar主要的用途就是:在需要重復地調度作業(yè)時,排除某些特殊的日期(比如周末時不執(zhí)行作業(yè))。
?
5,如何構造一個Trigger,Trigger監(jiān)聽器能監(jiān)聽什么?
Trigger的構造主要牽涉到三個類:TriggerBuilder、SimpleScheduleBuilder、DateBuilder。通過靜態(tài)導入,可以以一種DSL語言風格形式來編寫代碼。Trigger監(jiān)聽器可以監(jiān)聽Trigger在指定的時間被觸發(fā)了,或者未被觸發(fā)。也可監(jiān)聽Trigger已經(jīng)觸發(fā)“完畢”。
?
6,如何創(chuàng)建監(jiān)聽器,如何注冊監(jiān)聽器?
創(chuàng)建Trigger監(jiān)聽器:implements TriggerListener 接口或者繼承TriggerListenerSupport類。implements TriggerListener 接口需要實現(xiàn)接口中定義的所有的方法,而繼承TriggerListenerSupport類只需要重寫(Override)自己感興趣的方法。同理創(chuàng)建Job監(jiān)聽器。
監(jiān)聽器的注冊需要ListenerManager類來管理注冊的監(jiān)聽器,并需要Matcher類來匹配在事件發(fā)生時,是哪個Job執(zhí)行需要執(zhí)行何種操作。
?
7,調度監(jiān)聽器--SchedulerListener
調度器監(jiān)聽器監(jiān)聽的事件包括:Job/Trigger的執(zhí)行或觸發(fā)、Job/Trigger的刪除、通知調度器即將關閉以及調度器本身出錯。
?
8,作業(yè)的存儲--RAMJobStore 和 JDBCJobStore
RAMJobStore 把整個作業(yè)存儲在內存中,作業(yè)運行完成后,就被刪除了。
JDBCJobStore 將作業(yè)存儲在數(shù)據(jù)庫中,在使用JDBCJobStore之前,必須先配置好數(shù)據(jù)庫,并創(chuàng)建一系列的數(shù)據(jù)庫表來存儲作業(yè)的相關信息。
在Quartz安裝包的"docs/dbTables"目錄下已經(jīng)有相關的數(shù)據(jù)庫操作腳本來創(chuàng)建這些表了,只需要修改一下符合自己安裝的數(shù)據(jù)庫即可。
本文轉自hapjin博客園博客,原文鏈接:http://www.cnblogs.com/hapjin/p/4903417.html,如需轉載請自行聯(lián)系原作者
總結
以上是生活随笔為你收集整理的Quartz调度器学习--基本概念的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux下动态库(*.so)的路径问题
- 下一篇: String和StringBuffer的