1. 程式人生 > >Elastic-Job原始碼解析(二)之定時核心實現quartz

Elastic-Job原始碼解析(二)之定時核心實現quartz

Elastic-Job是一個分散式定時任務框架,其內部的定時主要是利用quartz來實現,而Elastic-Job核心是對quartz進行了封裝,並提供了分散式任務的功能。具體是怎麼實現呢? 怎麼實現分散式呢? 主要是通過Zookeeper通訊,獲取任務伺服器ip地址,並通過分片策略來達到分配任務的功能。這就是Elastic的核心。所以說定時不是我們研究Elastic-Job原始碼的核心,如何達到分散式任務,閱讀Elastic-Job的核心應該是如何分片。但是關於定時我們要先來了解一下。方便後面的學習

本篇文章比較短小,主要是為了給《Elastic-Job原始碼解析(三)之定時任務執行》做一個鋪墊,介紹下定時器quartz的使用。下一篇就專門講Elastic-Job如何分片和Elastic-Job如何一步一步把Job來執行的過程。

寫一個定時任務: 只打印當前時間和模擬的分片資訊


利用quartz定時:
Trigger是觸發器,在觸發器中寫入cron表示式(執行時間),指定執行的時間(Cron表示式,網上有線上工具)

JobDetail是任務的描述,指定任務類,和要儲存到任務類中的資料JobDataMap


quartz其實就這麼簡單,第一次瞭解的話,可能一下還不清楚,但是核心的元件就這麼多。這樣就能執行一個定時任務了。不過由於版本的原因quartz 1和2版本的API有一點區別,就是1可以直接new 觸發器和JobDetail。2就建議用建造者模式的API了,就像小編一樣通過構建者模式來構建build。

好了,當了解了這麼多,就知道定時是怎麼做的了(想深入學習定時器的可以自己下載quartz的jar包,然後跟著小編的例子來寫,在本地跑跑看),就這麼簡單,然後看下一篇我們一起來學習Elastic-Job是如何利用quartz來執行他的任務的了。