(1)什么是Quartz?
Quartz是一個完全由Java編寫的開源作業調度框架,為在Java應用程序中進行作業調度提供了簡單卻強大的機制。Quartz允許開發人員根據時間間隔來調度作業。它實現了作業和觸發器的多對多的關系,還能把多個作業與不同的觸發器關聯。簡單地創建一個org.quarz.Job接口的Java類。
(2)Quartz的特點;
作為一個優秀的開源調度框架,Quartz 具有以下特點:
① 強大的調度功能,例如支持豐富多樣的調度方法,可以滿足各種常規及特殊需求;
② 靈活的應用方式,例如支持任務和調度的多種組合方式,支持調度數據的多種存儲方式;
③ 分布式和集群能力,Terracotta 收購后在原來功能基礎上作了進一步提升。
④ Quartz 很容易與 Spring 集成實現靈活可配置的調度功能。
(3)Quartz專用詞匯說明;
下面是本文中用到的一些專用詞匯,在此聲明:
scheduler :
任務調度器
trigger :
觸發器,用于定義任務調度時間規則
job :
任務,即被調度的任務
misfire :
錯過的,指本來應該被執行但實際沒有被執行的任務調度
(4)Quartz任務調度基本實現原理;
Quartz 任務調度的核心元素是 scheduler, trigger 和 job,其中 trigger 和 job 是任務調度的元數據, scheduler 是實際執行調度的控制器。
在 Quartz 中,trigger 是用于定義調度時間的元素,即按照什么時間規則去執行任務。Quartz 中主要提供了四種類型的 trigger:SimpleTrigger,CronTirgger,DateIntervalTrigger,和 NthIncludedDayTrigger。這四種 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 類。
-
JAVA
+關注
關注
19文章
2969瀏覽量
104783 -
框架
+關注
關注
0文章
403瀏覽量
17500 -
觸發器
+關注
關注
14文章
2000瀏覽量
61165 -
Quartz
+關注
關注
0文章
7瀏覽量
7949
發布評論請先 登錄
相關推薦
評論