在日常的學(xué)習(xí)、工作、生活中,肯定對(duì)各類范文都很熟悉吧。范文怎么寫才能發(fā)揮它最大的作用呢?下面是小編為大家收集的優(yōu)秀范文,供大家參考借鑒,希望可以幫助到有需要的朋友。
開源任務(wù)調(diào)度系統(tǒng)篇一
quartz 是 opensymphony 開源組織在任務(wù)調(diào)度領(lǐng)域的一個(gè)開源項(xiàng)目,完全基于 java 實(shí)現(xiàn)。該項(xiàng)目于 2009 年被 terracotta 收購,目前是 terracotta 旗下的一個(gè)項(xiàng)目。讀者可以到 http:///站點(diǎn)下載 quartz 的發(fā)布版本及其源代碼。在產(chǎn)品開發(fā)中使用的是版本 1.8.4,因此本文內(nèi)容基于該版本。
強(qiáng)大的調(diào)度功能,例如支持豐富多樣的調(diào)度方法,可以滿足各種常規(guī)及特殊需求;
靈活的應(yīng)用方式,例如支持任務(wù)和調(diào)度的多種組合方式,支持調(diào)度數(shù)據(jù)的多種存儲(chǔ)方式;
分布式和集群能力,terracotta 收購后在原來功能基礎(chǔ)上作了進(jìn)一步提升。本文暫不討論該部分內(nèi)容
另外,作為 spring 默認(rèn)的調(diào)度框架,quartz 很容易與 spring 集成實(shí)現(xiàn)靈活可配置的調(diào)度功能。
下面是本文中用到的一些專用詞匯,在此聲明:
scheduler:任務(wù)調(diào)度器 trigger:觸發(fā)器,用于定義任務(wù)調(diào)度時(shí)間規(guī)則 job:任務(wù),即被調(diào)度的任務(wù) misfire:錯(cuò)過的,指本來應(yīng)該被執(zhí)行但實(shí)際沒有被執(zhí)行的任務(wù)調(diào)度
quartz 任務(wù)調(diào)度的基本實(shí)現(xiàn)原理
quartz 任務(wù)調(diào)度的核心元素是 scheduler, trigger 和 job,其中 trigger 和 job 是任務(wù)調(diào)度的元數(shù)據(jù), scheduler 是實(shí)際執(zhí)行調(diào)度的控制器。
在 quartz 中,trigger 是用于定義調(diào)度時(shí)間的元素,即按照什么時(shí)間規(guī)則去執(zhí)行任務(wù)。quartz 中主要提供了四種類型的 trigger:simpletrigger,crontirgger,dateintervaltrigger,和 nthincludeddaytrigger。這四種 trigger 可以滿足企業(yè)應(yīng)用中的絕大部分需求。我們將在企業(yè)應(yīng)用一節(jié)中進(jìn)一步討論四種 trigger 的`功能。
在 quartz 中,job 用于表示被調(diào)度的任務(wù)。主要有兩種類型的 job:無狀態(tài)的(stateless)和有狀態(tài)的(stateful)。對(duì)于同一個(gè) trigger 來說,有狀態(tài)的 job 不能被并行執(zhí)行,只有上一次觸發(fā)的任務(wù)被執(zhí)行完之后,才能觸發(fā)下一次執(zhí)行。job 主要有兩種屬性:volatility 和 durability,其中 volatility 表示任務(wù)是否被持久化到數(shù)據(jù)庫存儲(chǔ),而 durability 表示在沒有 trigger 關(guān)聯(lián)的時(shí)候任務(wù)是否被保留。兩者都是在值為 true 的時(shí)候任務(wù)被持久化或保留。一個(gè) job 可以被多個(gè) trigger 關(guān)聯(lián),但是一個(gè) trigger 只能關(guān)聯(lián)一個(gè) job。
在 quartz 中, scheduler 由 scheduler 工廠創(chuàng)建:directschedulerfactory 或者 stdschedulerfactory。 第二種工廠 stdschedulerfactory 使用較多,因?yàn)?directschedulerfactory 使用起來不夠方便,需要作許多詳細(xì)的手工編碼設(shè)置。 scheduler 主要有三種:remotembeanscheduler, remotescheduler 和 stdscheduler。本文以最常用的 stdscheduler 為例講解。這也是筆者在項(xiàng)目中所使用的 scheduler 類。
quartz 中的 trigger 和 job 需要存儲(chǔ)下來才能被使用。quartz 中有兩種存儲(chǔ)方式:ramjobstore, jobstoresupport,其中 ramjobstore 是將 trigger 和 job 存儲(chǔ)在內(nèi)存中,而 jobstoresupport 是基于 jdbc 將 trigger 和 job 存儲(chǔ)到數(shù)據(jù)庫中。ramjobstore 的存取速度非常快,但是由于其在系統(tǒng)被停止后所有的數(shù)據(jù)都會(huì)丟失,所以在通常應(yīng)用中,都是使用 jobstoresupport。
在 quartz 中,jobstoresupport 使用一個(gè)驅(qū)動(dòng)代理來操作 trigger 和 job 的數(shù)據(jù)存儲(chǔ):stdjdbcdelegate。stdjdbcdelegate 實(shí)現(xiàn)了大部分基于標(biāo)準(zhǔn) jdbc 的功能接口,但是對(duì)于各種數(shù)據(jù)庫來說,需要根據(jù)其具體實(shí)現(xiàn)的特點(diǎn)做某些特殊處理,因此各種數(shù)據(jù)庫需要擴(kuò)展 stdjdbcdelegate 以實(shí)現(xiàn)這些特殊處理。
s("content_relate");【quartz開發(fā)企業(yè)級(jí)任務(wù)調(diào)度應(yīng)用】相關(guān)文章:
1.j2ee企業(yè)級(jí)應(yīng)用開發(fā)
2.jsp應(yīng)用開發(fā)的特點(diǎn)
3.web service的開發(fā)與應(yīng)用基礎(chǔ)
4.辦公自動(dòng)化的應(yīng)用與開發(fā)
5.利用powerbuilder開發(fā)計(jì)算機(jī)web應(yīng)用
6.ntserver中層企業(yè)級(jí)試題及答案
7.j2ee應(yīng)用技術(shù)開發(fā)結(jié)構(gòu)
8.機(jī)械數(shù)控技術(shù)的開發(fā)方向與應(yīng)用前景