Quartz特點


執行環境

  • Quartz 可以執行嵌入在另一個獨立式應用程式
  • Quartz 可以在應用程式伺服器(或servlet容器)內被範例化,並且參與XA事務
  • Quartz 可以作為一個獨立的程式執行(其自己的Java虛擬機器內),可以通過RMI使用
  • Quartz 可以被範例化,作為獨立的專案叢集(負載平衡和故障轉移功能),用於作業的執行

作業排程

作業被安排在一個給定的觸發時執行。觸發器可以使用以下指令的接近任何組合來建立:

  • 在一天中的某個時間(到毫秒)
  • 在一週的某幾天
  • 在每月的某一天
  • 在一年中的某些日期
  • 不在註冊的日曆中列出的特定日期(如商業節假日除外)
  • 重複特定次數
  • 重複進行,直到一個特定的時間/日期
  • 無限重複
  • 重複的延遲時間間隔

作業是由其建立者賦予的名字,也可以組織成命名組。觸發器也可以給予名稱和放置在組中,以方便地將它們排程內組織。作業可以被新增到所述排程器一次,而是具有多個觸發器註冊。在企業Java環境中,作業可以執行自己的工作作為分散式(XA)事務的一部分。

作業執行

  • 作業可以實現簡單的作業介面,為作業執行工作的任何Java類。
  • Job類的範例可以通過Quartz被範例化,或者通過應用程式框架。
  • 當觸發時,排程通知實現JobListener和TriggerListener介面零個或多個Java物件(監聽器可以是簡單的Java物件,或EJB,JMS或發布者等)。這些監聽器在作業已經執行之後通知。
  • 由於作業完成後返回JobCompletionCode,它通知的成功或失敗的排程。JobCompletionCode還可以指示的基礎上,成功的話就採取行動排程/失敗的程式碼 - 如立即重新執行作業。

作業永續性

  • Quartz的設計包括可被實現以提供的作業儲存各種機制一個作業儲存介面
  • 通過使用包含的JDBCJobStore,所有的作業和觸發器組態為“非揮發性”都儲存在通過JDBC關聯式資料庫。
  • 通過使用包含的RAMJobStore,所有的作業和觸發器儲存在RAM,因此不計劃執行仍然存在 - 但這是無需使用外部資料庫的優勢。

事務

  • 可以參與JTA事務,通過使用JobStoreCMT(JDBCJobStore的子類)。
  • Quartz可以管理JTA事務(開始並提交它們)周圍作業的執行,從而使作業執行的工作自動將JTA事務中發生。

叢集

  • 故障切換
  • 負載均衡
  • Quartz的內建的群集功能,通過JDBCJobStore(如上所述)依靠資料庫持久
  • Terracotta擴充套件Quartz提供叢集功能,而不需要一個支援資料庫

監聽器和外掛

  • 應用程式可以捕捉事件的排程監控或通過實現一個或多個監聽器介面控制工作/觸發行為。
  • 外掛機制,可以用來新增功能,Quartz讓作業執行過程中或工作負載和觸發定義的歷史不受限在一個檔案中。
  • 附帶了一些“工廠建有”外掛和監聽器。