Quartz 介紹

y2de 12年前發布 | 3K 次閱讀 5.2.1版本發布

Quartz是一個任務日程管理系統.

概述

Quartz是OpenSymphony開源組織在Job scheduling領域又一開源項目,它可以與J2EEJ2SE應用程序相結合使用也可以單獨使用。Quartz可以用來創建簡單或為運行十個,百個,甚至是好幾萬個Jobs這樣復雜的日程序表。Jobs可以做成標準的JAVA組件或Ejbs.

軟件的角度來看,Quartz用一個小Java庫發布文件(.jar文件),這個庫文件包含了所有Quartz核心功能。這些功能的主要接口(API)是Scheduler接口。它提供了簡單的操作,例如:將任務納入日程或者從日程中取消,開始/停止/暫停日程進度。

如果你想將軟件組件的執行納入到日程中,它們只需簡單地實現Job接口,這個接口有一個execute()方法。如果希望在日程安排的時間到達時通知組件,那么這些組件應實現TriggerListener或者JobListener接口。

Quartz主過程可以在應用中啟動或者運行,也可以作為一個獨立的應用(帶有RMI接口),或者在一個J2EE應用服務器中運行,并且可作為其實J2EE組件的一種引用資源。

特點

  • 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的功能。例如:記錄任務執行歷史的日志,或者從文件中載入任務和觸發器的定義。

官網地址:http://www.quartz-scheduler.org

 本文由用戶 y2de 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!