運行環(huán)境
-
Quartz 可以運行嵌入在另一個獨立式應用程序
-
Quartz 可以在應用程序服務器(或servlet容器)內被實例化,并且參與XA事務
-
Quartz 可以作為一個獨立的程序運行(其自己的Java虛擬機內),可以通過RMI使用
-
Quartz 可以被實例化,作為獨立的項目集群(負載平衡和故障轉移功能),用于作業(yè)的執(zhí)行
作業(yè)調度
作業(yè)被安排在一個給定的觸發(fā)時運行。觸發(fā)器可以使用以下指令的接近任何組合來創(chuàng)建:
-
在一天中的某個時間(到毫秒)
-
在一周的某幾天
-
在每月的某一天
-
在一年中的某些日期
-
不在注冊的日歷中列出的特定日期(如商業(yè)節(jié)假日除外)
-
重復特定次數
-
重復進行,直到一個特定的時間/日期
-
無限重復
-
重復的延遲時間間隔
作業(yè)是由其創(chuàng)建者賦予的名字,也可以組織成命名組。觸發(fā)器也可以給予名稱和放置在組中,以方便地將它們調度內組織。作業(yè)可以被添加到所述調度器一次,而是具有多個觸發(fā)器注冊。在企業(yè)Java環(huán)境中,作業(yè)可以執(zhí)行自己的工作作為分布式(XA)事務的一部分。
作業(yè)執(zhí)行
-
作業(yè)可以實現簡單的作業(yè)接口,為作業(yè)執(zhí)行工作的任何Java類。
-
Job類的實例可以通過Quartz被實例化,或者通過應用程序框架。
-
當觸發(fā)時,調度通知實現JobListener和TriggerListener接口零個或多個Java對象(監(jiān)聽器可以是簡單的Java對象,或EJB,JMS或發(fā)布者等)。這些監(jiān)聽器在作業(yè)已經執(zhí)行之后通知。
-
由于作業(yè)完成后返回JobCompletionCode,它通知的成功或失敗的調度。JobCompletionCode還可以指示的基礎上,成功的話就采取行動調度/失敗的代碼 - 如立即重新執(zhí)行作業(yè)。
作業(yè)持久性
-
Quartz的設計包括可被實現以提供的作業(yè)存儲各種機制一個作業(yè)存儲接口
-
通過使用包含的JDBCJobStore,所有的作業(yè)和觸發(fā)器配置為“非揮發(fā)性”都存儲在通過JDBC關系數據庫。
-
通過使用包含的RAMJobStore,所有的作業(yè)和觸發(fā)器存儲在RAM,因此不計劃執(zhí)行仍然存在 - 但這是無需使用外部數據庫的優(yōu)勢。
事務
-
可以參與JTA事務,通過使用JobStoreCMT(JDBCJobStore的子類)。
-
Quartz可以管理JTA事務(開始并提交它們)周圍作業(yè)的執(zhí)行,從而使作業(yè)執(zhí)行的工作自動將JTA事務中發(fā)生。
集群
-
故障切換
-
負載均衡
-
Quartz的內置的群集功能,通過JDBCJobStore(如上所述)依靠數據庫持久
-
Terracotta擴展Quartz提供集群功能,而不需要一個支持數據庫
監(jiān)聽器和插件
-
應用程序可以捕捉事件的調度監(jiān)控或通過實現一個或多個監(jiān)聽器接口控制工作/觸發(fā)行為。
-
插件機制,可以用來添加功能,Quartz讓作業(yè)執(zhí)行過程中或工作負載和觸發(fā)定義的歷史不受限在一個文件中。
-
附帶了一些“工廠建有”插件和監(jiān)聽器。