<dfn id="w48us"></dfn><ul id="w48us"></ul>
  • <ul id="w48us"></ul>
  • <del id="w48us"></del>
    <ul id="w48us"></ul>
  • Quartz開發企業級任務調度應用

    時間:2024-08-22 23:00:10 J2EE培訓 我要投稿
    • 相關推薦

    Quartz開發企業級任務調度應用

      Quartz 是 OpenSymphony 開源組織在任務調度領域的一個開源項目,完全基于 Java 實現。該項目于 2009 年被 Terracotta 收購,目前是 Terracotta 旗下的一個項目。讀者可以到 http://www.quartz-scheduler.org/站點下載 Quartz 的發布版本及其源代碼。在產品開發中使用的是版本 1.8.4,因此本文內容基于該版本。

      作為一個優秀的開源調度框架,Quartz 具有以下特點:

      強大的調度功能,例如支持豐富多樣的調度方法,可以滿足各種常規及特殊需求;

      靈活的應用方式,例如支持任務和調度的多種組合方式,支持調度數據的多種存儲方式;

      分布式和集群能力,Terracotta 收購后在原來功能基礎上作了進一步提升。本文暫不討論該部分內容

      另外,作為 Spring 默認的調度框架,Quartz 很容易與 Spring 集成實現靈活可配置的調度功能。

      下面是本文中用到的一些專用詞匯,在此聲明:

      scheduler:任務調度器 trigger:觸發器,用于定義任務調度時間規則 job:任務,即被調度的任務 misfire:錯過的,指本來應該被執行但實際沒有被執行的任務調度

      Quartz 任務調度的基本實現原理

      核心元素

      Quartz 任務調度的核心元素是 scheduler, trigger 和 job,其中 trigger 和 job 是任務調度的元數據, scheduler 是實際執行調度的控制器。

      在 Quartz 中,trigger 是用于定義調度時間的元素,即按照什么時間規則去執行任務。Quartz 中主要提供了四種類型的 trigger:SimpleTrigger,CronTirgger,DateIntervalTrigger,和 NthIncludedDayTrigger。這四種 trigger 可以滿足企業應用中的絕大部分需求。我們將在企業應用一節中進一步討論四種 trigger 的功能。

      在 Quartz 中,job 用于表示被調度的任務。主要有兩種類型的 job:無狀態的(stateless)和有狀態的(stateful)。對于同一個 trigger 來說,有狀態的 job 不能被并行執行,只有上一次觸發的任務被執行完之后,才能觸發下一次執行。Job 主要有兩種屬性:volatility 和 durability,其中 volatility 表示任務是否被持久化到數據庫存儲,而 durability 表示在沒有 trigger 關聯的時候任務是否被保留。兩者都是在值為 true 的時候任務被持久化或保留。一個 job 可以被多個 trigger 關聯,但是一個 trigger 只能關聯一個 job。

      在 Quartz 中, scheduler 由 scheduler 工廠創建:DirectSchedulerFactory 或者 StdSchedulerFactory。 第二種工廠 StdSchedulerFactory 使用較多,因為 DirectSchedulerFactory 使用起來不夠方便,需要作許多詳細的手工編碼設置。 Scheduler 主要有三種:RemoteMBeanScheduler, RemoteScheduler 和 StdScheduler。本文以最常用的 StdScheduler 為例講解。這也是筆者在項目中所使用的 scheduler 類。

      數據存儲

      Quartz 中的 trigger 和 job 需要存儲下來才能被使用。Quartz 中有兩種存儲方式:RAMJobStore, JobStoreSupport,其中 RAMJobStore 是將 trigger 和 job 存儲在內存中,而 JobStoreSupport 是基于 jdbc 將 trigger 和 job 存儲到數據庫中。RAMJobStore 的存取速度非常快,但是由于其在系統被停止后所有的數據都會丟失,所以在通常應用中,都是使用 JobStoreSupport。

      在 Quartz 中,JobStoreSupport 使用一個驅動代理來操作 trigger 和 job 的數據存儲:StdJDBCDelegate。StdJDBCDelegate 實現了大部分基于標準 JDBC 的功能接口,但是對于各種數據庫來說,需要根據其具體實現的特點做某些特殊處理,因此各種數據庫需要擴展 StdJDBCDelegate 以實現這些特殊處理。

    【Quartz開發企業級任務調度應用】相關文章:

    JSP應用開發的特點10-14

    Web Service的開發與應用基礎07-12

    NtServer中層企業級試題及答案10-13

    企業級系統架構的技術特點07-25

    LabView開發嵌入式應用的技巧06-07

    嵌入式系統的應用和開發09-15

    辦公自動化的應用與開發07-10

    sun認證JSP應用開發背景及特點07-10

    利用PowerBuilder開發計算機WEB應用09-08

    HTML5開發移動應用的特性有哪些08-22

    主站蜘蛛池模板: 午夜精品久久久久久影视777| 久久99精品国产自在现线小黄鸭| 一本久久a久久精品综合香蕉| 最新国产精品亚洲| 久久精品蜜芽亚洲国产AV| 欧美日韩专区麻豆精品在线| 99久久精品国产一区二区| 99热亚洲色精品国产88| 亚洲国产精品无码一线岛国| 欧美成人精品高清在线播放 | 午夜三级国产精品理论三级| 99热精品毛片全部国产无缓冲| 国产福利91精品一区二区三区 | 久久精品成人一区二区三区| 午夜精品成年片色多多| 99国产欧美精品久久久蜜芽| 人妻少妇精品视中文字幕国语 | 日韩精品欧美| 久久露脸国产精品| 国产精品免费一区二区三区| 91精品免费久久久久久久久| 精品久久久久久亚洲| 国产精品久久久久久一区二区三区| 精品久久人妻av中文字幕| 久久精品无码一区二区无码| 少妇人妻偷人精品无码视频新浪| 亚洲视频在线精品| 亚洲色精品aⅴ一区区三区| 日韩欧美国产精品第一页不卡| 国产在线精品国自产拍影院| 亚洲无码日韩精品第一页| 亚洲精品无码日韩国产不卡?V| 亚洲AV日韩精品一区二区三区| 四虎国产精品免费久久| 久久精品国产99久久久香蕉| 青草国产精品视频。| 亚洲国产精品视频| 亚洲综合无码精品一区二区三区| 四虎精品免费永久免费视频| 亚洲精品无码专区在线播放| 一本久久a久久精品亚洲|