
2009年10月22日
Quartz特點:
?? Quartz能嵌入到任何獨立的應用中運行。
?? Quartz能在應用服務器或者Servlet容器中實例化,并且能夠參與XA事務。
?? Quartz能夠以獨立的方式運行(在它自己的Java虛擬機中),可以通過RMI使用Quartz。
?? Quartz可以被實例化為獨立程序的集群(有負載均衡和容錯能力)。
Job Scheduling(任務日程安排)
任務在給定的觸發器(Trigger)觸發時執行。觸發器可以通過幾乎以下所有形式的組合方式進行創建:
?? 在一天中的任意時刻(可以精確到毫秒)。
?? 一周中特定的一些天。
?? 一個月中特定的一些天。
?? 一年中特定的一些天
?? 不在日歷列表中注冊的一些天(比如節假日)。
?? 循環特定的次數。
?? 循環到特定的時間。
?? 無限循環。
?? 按照一定的時間間隔循環。
Job Execution(任務執行)
• 任務是任何實現簡單Job接口的Java 類,這樣開發者能夠執行任何完成他們工作的任務。
• 任務類的實例可以由Quartz實例化,也可以由你的程序框架實例化。
當觸發器被觸發時,日程管理器將會通知某個或者多個實現了JobListener 或TriggerListener的對象(監聽器可以是簡單的Java對象,或者EJBs,或者JMS消息發布器,等等)。這些監聽器在任務執行完畢后也會接到通知。
• 任務被完成后,他們會返回一個“任務完成碼(JobCompletionCode)”,這個“任務完成碼”告知日程管理器任務執行的結果是成功還是失敗。日程管理器會根據成功或者失敗碼來采取措施,比如:立即重新執行任務。
Job Persistence(任務持久化)
• Quartz設計中包括了一個JobStore接口,這樣,實現這個接口的Job類可以以多種機制實現Job的存儲。
• 通過使用JDBCJobStore,所有的Jobs和Triggers被配置為“non-volatile”(不輕快)的方式。即,通過JDBC存儲在關系數據庫中。
• 通過使用RAMJobStore,所有Jobs和Triggers被存儲在RAM。因此,在程序執行中沒有被持久化,但這種方式的優點就是不需要外部數據庫。
Transactions(事務)
• Quartz通過JobStoreCMT(JDBCJobStore的一個子類)可參與JTA事務。
• Quartz可以管理JTA事務(開始或者提交事務)。
Clustering(集群)
• Fail-over.(容錯)
• Load balancing.(負載均衡)
Listeners & Plug-Ins(監聽器及插件)
• 應用可以通過實現一個或者多個監聽器接口來實現捕捉日程事件,以監視或控制任務/觸發器的行為。
• 可以通過插件的機制來擴展Quartz 的功能。例如:記錄任務執行歷史的日志,或者從文件中載入任務和觸發器的定義。
posted @
2009-10-22 23:21 腳踏實地 閱讀(1092) |
評論 (0) |
編輯 收藏