概述: java
Quartzs OpenSymphony開源組織在Job scheduling領域有一個開源項目,它開源與將J2EE與將J2SE應用程序相結合也能夠單獨使用。Quartz開源用來建立簡單或爲運行是個,百個,甚至好幾萬個jobs這樣複雜的程序。jobs能夠作成標準的Java組件或EJBs。Quartz的最新版本爲Quartz2.2.1。數據庫
調度簡單:緩存
quartz是一個徹底由java編寫的開源做業調度框架。用法及其簡單:簡單地建立一個實現org.quartz.Job接口的java類。Job接口包含惟一的方法:服務器
public void excute(JobExecutionContext context) throws JobException{}多線程
在你的Job接口實現類裏面,添加一些邏輯到execute()方法。一旦你設置好Job實現類並設定好調度時間表,quartz將密切注意剩餘時間。當調度程序肯定該是通知你的時候,quartz框架將調用你Job實現類(做業類)上的execute()方法並容許作它該作的事情。無需報告任何東西給調度器或調用任何特定的東西。僅僅執行任務好結束任務便可。若是配置你的做業在隨後再次被調用,quartz框架將在適當的時間再次調用它。架構
內部架構:併發
規模:大約300個java類和接口,並被組織到12個包中(Apache Struts把大約325個類和接口組織到11個包中)。負載均衡
調度器:框架
Quartz框架的核心是調度器。調度器負責管理quartz應用運行時環境。調度器不是靠本身作全部工做,而是依賴框架內一些很是重要的部件。quartz不單單是線程和線程管理。爲確保可伸縮性,quartz採用了基於多線程的架構。啓動時,架構初始化一套worker線程,這套線程被調度器用來執行預約的做業。這就是quartz怎樣能併發運行多個做業的原理。quartz依賴一套鬆耦合的線程池管理部件來管理線程環境。分佈式
框架特徵:
quartz框架有一個豐富的特徵集。
1、監聽器和插件
監聽是你所建立的java類,當關鍵事件發生時會受到框架的回調。例如:當一個做業被調度、沒有調度或觸發器終止和再也不打火時,能夠經過設置來通知你的監聽器。quartz框架包含了調度器監聽、做業和觸發器監聽。你能夠配置做業和觸發器監聽爲全局監聽或者是特定於做業和觸發器的監聽。
一旦你的一個具體監聽被調用,你就能使用這個技術來作一些你想要在監聽類裏面作的事情。例如:你若是想要在每次做業完成時發送一個電子郵件,你能夠將這個邏輯寫進做業裏面,也能夠寫進JobListener裏面。寫進JobListener的方式強制使用鬆耦合有利於設計上作得更好。
quartz插件是一個新的功能特性,無須修改quartz源碼即可被建立和添加進quartz框架。它爲想要擴展quartz框架有沒有時間提交改變給quartz開發團隊和等待新版本的開發人員而設計。
2、集羣quartz應用:
quartz應用能被集羣,是水平句羣仍是垂直集羣取決於你本身的須要。集羣提供如下好處:
①伸縮性
②高可用性
③負載均衡
quartz能夠藉助關係數據庫和jdbc做業存儲支持集羣。
Terracotta擴展quartz提供集羣功能而不須要數據庫支持。
(Terracotta是一款由美國Terracotta公司開發的著名開源java集羣平臺。它在JVM與Java應用之間實現了一個專門處理集羣功能的抽象層,以其特有的增量檢測、智能定向傳送、分佈式協做、服務器鏡像、分片等技術,容許用戶在不改變現有系統代碼的狀況下實現單機Java應用向集羣化應用的無縫遷移。使得用戶能夠專一於商業邏輯的開發,由Terracotta負責實現高性能、高可用性、高穩定性的企業級Java集羣。
Terracotta公司在2009年收購了著名的Java開源緩存項目Ehcache以及java任務調度項目quartz。通過對該項目的深度整合,Terracotta推出了易用性更高的分佈式緩存、分佈式任務調度以及分佈式Web Session等快捷解決方案,進一步方便了開發人員開發分佈式Java應用。)