Quartz基於JAVA實現開源調度框架的應用

來源:互聯網
上載者:User
關鍵字 java Quartz 開源調度框架

Quartz 是 OpenSymphony 開源組織在任務調度領域的一個開源專案,完全基於 JAVA 實現。 該專案于 2009 年被 Terracotta 收購,目前是 Terracotta 旗下的一個專案。 讀者可以到 HTTP://www.quartz-scheduler.org/網站下載 Quartz 的發佈版本及其原始程式碼。 筆者在產品開發中使用的是版本 1.8.4,因此本文內容基於該版本。 本文不僅介紹如何應用 Quartz 進行開發,也對其內部實現原理作一定講解。

作為一個優秀的開源調度框架,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 核心元素之間的關係如下圖所示:

圖 1. Quartz 核心元素關係圖

執行緒視圖

在 Quartz 中,有兩類執行緒,Scheduler 調度執行緒和任務執行執行緒,其中任務執行執行緒通常使用一個執行緒池維護一組執行緒。

圖 2. Quartz 執行緒視圖

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.