鍍金池/ 教程/ Java/ Quartz特點
Quartz教程
Quartz2作業(yè)監(jiān)聽
Quartz特點
Quartz執(zhí)行多作業(yè)
Quartz2第一個程序
Quartz列出調度器所有作業(yè)

Quartz特點

運行環(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)聽器。