quartz(開源項目)

quartz(開源項目)

本詞條是多義詞,共5個義項
更多義項 ▼ 收起列表 ▲

Quartz是OpenSymphony開源組織在Job scheduling領域又一個開源項目,它可以與J2EE與J2SE應用程式相結合也可以單獨使用。Quartz可以用來創建簡單或為運行十個,百個,甚至是好幾萬個Jobs這樣複雜的程式。Jobs可以做成標準的Java組件或 EJBs。Quartz的最新版本為Quartz 2.3.0。

基本介紹

  • 中文名:擴特茲公式
  • 外文名:quartz
  • 類別:開源項目
  • 最新版本:Quartz 2.3.0
  • 解釋:由java編寫的開源作業調度框架
調度簡單,內部架構,調度器,框架特徵,

調度簡單

Quartz是一個完全由java編寫的開源作業調度框架。不要讓作業調度這個術語嚇著你。儘管Quartz框架整合了許多額外功能, 但就其簡易形式看,你會發現它易用得簡直讓人受不了!。簡單地創建一個實現org.quartz.Job接口的java類。Job接口包含唯一的方法:
public void execute(JobExecutionContext context)
throws JobExecutionException;
在你的Job接口實現類裡面,添加一些邏輯到execute()方法。一旦你配置好Job實現類並設定好調度時間表,Quartz將密切注意剩餘時間。當調度程式確定該是通知你的作業的時候,Quartz框架將調用你Job實現類(作業類)上的execute()方法並允許做它該做的事情。無需報告任何東西給調度器或調用任何特定的東西。僅僅執行任務和結束任務即可。如果配置你的作業在隨後再次被調用,Quartz框架將在恰當的時間再次調用它。

內部架構

在規模方面,Quartz跟大多數開源框架類似。大約有300個java類和接口,並被組織到12個包中。這可以和Apache Struts把大約325個類和接口以及組織到11個包中相比。儘管規模幾乎不會用來作為衡量框架質量的一個特性,但這裡的關鍵是quartz內含很多功能,這些功能和特性集是否成為、或者應該成為評判一個開源或非開源框架質量的因素。

調度器

Quartz框架的核心是調度器。調度器負責管理Quartz套用運行時環境。調度器不是靠自己做所有的工作,而是依賴框架內一些非常重要的部件。Quartz不僅僅是執行緒和執行緒管理。為確保可伸縮性,Quartz採用了基於多執行緒的架構。啟動時,框架初始化一套worker執行緒,這套執行緒被調度器用來執行預定的作業。這就是Quartz怎樣能並發運行多個作業的原理。Quartz依賴一套松耦合的執行緒池管理部件來管理執行緒環境。本篇文章中,我們會多次提到執行緒池管理,但Quartz裡面的每個對象是可配置的或者是可定製的。所以,例如,如果你想要插進自己執行緒池管理設施,我猜你一定能!

框架特徵

Quartz框架有一個豐富的特徵集。事實上,Quartz有太多特性以致不能在一種情況中全部領會,下面列出了一些有意思的特徵,但沒時間在此詳細討論。
監聽器和外掛程式
每個人都喜歡監聽和外掛程式。今天,幾乎下載任何開源框架,你必定會發現支持這兩個概念。監聽是你創建的java類,當關鍵事件發生時會收到框架的回調。例如,當一個作業被調度、沒有調度或觸發器終止和不再觸發時,這些都可以通過設定來通知你的監聽器。Quartz框架包含了調度器監聽、作業和觸發器監聽。你可以配置作業和觸發器監聽為全局監聽或者是特定於作業和觸發器的監聽。
一旦你的一個具體監聽被調用,你就能使用這個技術來做一些你想要在監聽類裡面做的事情。例如,你如果想要在每次作業完成時傳送一個電子郵件,你可以將這個邏輯寫進作業裡面,也可以寫進JobListener裡面。寫進JobListener的方式強制使用松耦合有利於設計上做到更好。
Quartz外掛程式是一個新的功能特性,無須修改Quartz源碼便可被創建和添加進Quartz框架。他為想要擴展Quartz框架又沒有時間提交改變給Quartz開發團隊和等待新版本的開發人員而設計。如果你熟悉Struts外掛程式的話,那么完全可以理解Quartz外掛程式的使用。
與其Quartz提供一個不能滿足你需要的有限擴展點,還不如通過使用外掛程式來擁有可修整的擴展點。
集群Quartz套用
Quartz套用能被集群,是水平集群還是垂直集群取決於你自己的需要。集群提供以下好處:
·伸縮性
·高可用性
·負載均衡
Quartz可以藉助關係資料庫和JDBC作業存儲支持集群。
Terracotta擴展quartz提供集群功能而不需要資料庫支持
相關工具
Quartz經常會用到cron表達式,可以使用國外網站cronmaker輔助生成cron表達式。

相關詞條

熱門詞條

聯絡我們