quartz详解
Quartz是OpenSymphony開源組織在Job scheduling領(lǐng)域又一個開源項目,它可以與J2EE與J2SE應用程序相結(jié)合也可以單獨使用。Quartz可以用來創(chuàng)建簡單或為運行十個,百個,甚至是好幾萬個Jobs這樣復雜的日程序表。Jobs可以做成標準的Java組件或 EJBs。Quartz的最新版本為Quartz 2.10。 調(diào)度簡單 內(nèi)部架構(gòu) 調(diào)度器 框架特征
目錄
調(diào)度簡單
Quartz是一個完全由java編寫的開源作業(yè)調(diào)度框架。不要讓作業(yè)調(diào)度這個術(shù)語嚇著你。盡管Quartz框架整合了許多額外功能, 但就其簡易形式看,你會發(fā)現(xiàn)它易用得簡直讓人受不了!。簡單地創(chuàng)建一個實現(xiàn)org.quartz.Job接口的java類。Job接口包含唯一的方法: public void execute(JobExecutionContext context) throws JobExecutionException; 在你的Job接口實現(xiàn)類里面,添加一些邏輯到execute()方法。一旦你配置好Job實現(xiàn)類并設(shè)定好調(diào)度時間表,Quartz將密切注意剩余時間。當調(diào)度程序確定該是通知你的作業(yè)的時候,Quartz框架將調(diào)用你Job實現(xiàn)類(作業(yè)類)上的execute()方法并允許做它該做的事情。無需報告任何東西給調(diào)度器或調(diào)用任何特定的東西。僅僅執(zhí)行任務和結(jié)束任務即可。如果配置你的作業(yè)在隨后再次被調(diào)用,Quartz框架將在恰當?shù)臅r間再次調(diào)用它。內(nèi)部架構(gòu)
在規(guī)模方面,Quartz跟大多數(shù)開源框架類似。大約有300個java類和接口,并被組織到12個包中。這可以和Apache Struts把大約325個類和接口以及組織到11個包中相比。盡管規(guī)模幾乎不會用來作為衡量框架質(zhì)量的一個特性,但這里的關(guān)鍵是quartz內(nèi)含很多功能,這些功能和特性集是否成為、或者應該成為評判一個開源或非開源框架質(zhì)量的因素。調(diào)度器
Quartz框架的核心是調(diào)度器。調(diào)度器負責管理Quartz應用運行時環(huán)境。調(diào)度器不是靠自己做所有的工作,而是依賴框架內(nèi)一些非常重要的部件。Quartz不僅僅是線程和線程管理。為確保可伸縮性,Quartz采用了基于多線程的架構(gòu)。啟動時,框架初始化一套worker線程,這套線程被調(diào)度器用來執(zhí)行預定的作業(yè)。這就是Quartz怎樣能并發(fā)運行多個作業(yè)的原理。Quartz依賴一套松耦合的線程池管理部件來管理線程環(huán)境。本片文章中,我們會多次提到線程池管理,但Quartz里面的每個對象是可配置的或者是可定制的。所以,例如,如果你想要插進自己線程池管理設(shè)施,我猜你一定能!框架特征
Quartz框架有一個豐富的特征集。事實上,quarts有太多特性以致不能在一種情況中全部領(lǐng)會,下面列出了一些有意思的特征,但沒時間在此詳細討論。 監(jiān)聽器和插件 每個人都喜歡監(jiān)聽和插件。今天,幾乎下載任何開源框架,你必定會發(fā)現(xiàn)支持這兩個概念。監(jiān)聽是你創(chuàng)建的java類,當關(guān)鍵事件發(fā)生時會收到框架的回調(diào)。例如,當一個作業(yè)被調(diào)度、沒有調(diào)度或觸發(fā)器終止和不再打火時,這些都可以通過設(shè)置來來通知你的監(jiān)聽器。Quartz框架包含了調(diào)度器監(jiān)聽、作業(yè)和觸發(fā)器監(jiān)聽。你可以配置作業(yè)和觸發(fā)器監(jiān)聽為全局監(jiān)聽或者是特定于作業(yè)和觸發(fā)器的監(jiān)聽。 一旦你的一個具體監(jiān)聽被調(diào)用,你就能使用這個技術(shù)來做一些你想要在監(jiān)聽類里面做的事情。例如,你如果想要在每次作業(yè)完成時發(fā)送一個電子郵件,你可以將這個邏輯寫進作業(yè)里面,也可以JobListener里面。寫進JobListener的方式強制使用松耦合有利于設(shè)計上做到更好。 Quartz插件是一個新的功能特性,無須修改Quartz源碼便可被創(chuàng)建和添加進Quartz框架。他為想要擴展Quartz框架又沒有時間提交改變給Quartz開發(fā)團隊和等待新版本的開發(fā)人員而設(shè)計。如果你熟悉Struts插件的話,那么完全可以理解Quartz插件的使用。 與其Quartz提供一個不能滿足你需要的有限擴展點,還不如通過使用插件來擁有可修整的擴展點。 集群Quartz應用 Quartz應用能被集群,是水平集群還是垂直集群取決于你自己的需要。集群提供以下好處: ·伸縮性 ·高可用性 ·負載均衡 目前,Quartz只能借助關(guān)系數(shù)據(jù)庫和JDBC作業(yè)存儲支持集群。將來的版本這個制約將消失并且用RAMJobStore集群將是可能的而且將不需要數(shù)據(jù)庫的支持。[1]轉(zhuǎn)載于:https://www.cnblogs.com/langtianya/archive/2013/04/27/3048206.html
總結(jié)
- 上一篇: 怎么计算末年某月某天有几个星期天公司
- 下一篇: 130701基础练习-first