1.前言
當(dāng)我們用SpringBoot編寫定時(shí)任務(wù)處理業(yè)務(wù),但是每次定時(shí)的配置都需要修改配置文件,然后重啟才生效。有沒(méi)有辦法不需要重啟服務(wù),又能測(cè)試定時(shí)器Job的功能是否正常?
今天跟大家分享一個(gè)開源工具,希望能幫助到有這個(gè)需求的童鞋們。

2.概念
Elastic-Job是當(dāng)當(dāng)網(wǎng)開源的分布式任務(wù)調(diào)度解決方案,是業(yè)內(nèi)使用較多的分布式調(diào)度解決方案。
Elastic-Job-Lite定位為輕量級(jí)無(wú)中心化解決方案,使用jar包的形式提供分布式任務(wù)的協(xié)調(diào)服務(wù),,外部?jī)H僅依賴Zookeeper。
今天跟大家分享的就是Elastic-Job-Lite,從如何搭建,到使用觸發(fā)Job。
3.部署
3.1下載編譯
$ git clone https://github.com/elasticjob/elastic-job-lite.git
$ cd elastic-job-lite
$ mvn clean install -Dmaven.test.skip=true
編譯完畢后會(huì)生成一個(gè)壓縮包,這里的版本是以3.0.0.M1為例。
$ ls -lrt elastic-job-lite-console/target/elastic-job-lite-console-3.0.0.M1-SNAPSHOT.tar.gz
3.2部署啟動(dòng)
$ tar zxf elastic-job-lite-console-3.0.0.M1-SNAPSHOT.tar.gz
$ cd elastic-job-lite-console-3.0.0.M1-SNAPSHOT/bin
$ ./start.sh
- 默認(rèn)配置文件是auth.properties, 配置管理員及訪客用戶名及密碼
root.username=root
root.password=root
guest.username=guest
guest.password=guest
- 8899為默認(rèn)端口號(hào),可通過(guò)啟動(dòng)腳本輸入-p自定義端口號(hào)。
3.3驗(yàn)證
訪問(wèn)http://localhost:8899/即可訪問(wèn)控制臺(tái)

4.使用教程
當(dāng)我們用SpringBoot實(shí)現(xiàn)了Job服務(wù),我們可以根據(jù)提供的定時(shí)任務(wù)信息,在這個(gè)開源網(wǎng)頁(yè)平臺(tái)填入相應(yīng)的信息,那么就可以管理對(duì)應(yīng)的Job服務(wù)。
4.1配置注冊(cè)中心
1.左邊菜單點(diǎn)擊【全局配置】選中【注冊(cè)中心配置】,然后出現(xiàn)一個(gè)已配置列表,在列表的分頁(yè)顯示下方有個(gè)【添加】按鈕進(jìn)行添加。

2.注冊(cè)中心信息填寫
- 注冊(cè)中心名稱:自己自定義填寫。
- 注冊(cè)中心地址:填寫對(duì)應(yīng)服務(wù)的zk信息,多個(gè)用逗號(hào)分隔。
- 命名空間:填寫對(duì)應(yīng)服務(wù)的zk命名空間namespace。
- 登錄憑證:可不填,默認(rèn)zookeeper不需要填寫,除非設(shè)置了zookeeper相關(guān)信息。

3.填寫完之后,點(diǎn)擊右下角【提交】按鈕,即完成。
4.列表中出現(xiàn)新增的注冊(cè)配置,然后點(diǎn)擊該配置最后的操作項(xiàng),【連接】,則連接上zookeeper。

4.2 查看這個(gè)zookeeper注冊(cè)中心對(duì)應(yīng)的作業(yè)
上面配置完注冊(cè)中心后,會(huì)顯示對(duì)應(yīng)的定時(shí)任務(wù),在左側(cè)【作業(yè)操作】下點(diǎn)擊【作業(yè)維度】,即可查看當(dāng)前掛在zookeeper的命名空間下的所有任務(wù),提供刪除,編輯,觸發(fā),失效等一系列功能。

4.3 不同狀態(tài)下對(duì)應(yīng)的作業(yè)按鈕
①作業(yè)維度下Job已生效的狀態(tài)為正常,操作下有5個(gè)按鈕:修改、詳情、觸發(fā)、失效、終止;
②作業(yè)維度下Job狀態(tài)為已失效時(shí),操作下有4個(gè)按鈕:修改、詳情、生效、終止;
③作業(yè)維度下Job狀態(tài)為分片待調(diào)整時(shí),操作下有3個(gè)按鈕:修改、詳情、終止;
④作業(yè)維度下Job狀態(tài)為已下線時(shí),操作下有2個(gè)按鈕:修改、刪除。
4.4 修改job的觸發(fā)時(shí)間
1.點(diǎn)擊作業(yè)維度最后一列操作下的"修改"按鈕進(jìn)入修改作業(yè)頁(yè)面,如圖所示:

2.修改“Cron表達(dá)式”里的時(shí)間格式,改成你想要執(zhí)行的時(shí)間策略,提交修改。
這樣到了指定的時(shí)間,就會(huì)執(zhí)行這個(gè)作業(yè)Job,是不是很簡(jiǎn)單。
4.5 實(shí)時(shí)觸發(fā)Job
①處于分片待調(diào)整狀態(tài)的Job,需要更改Cron表達(dá)式后程序執(zhí)行了一次或者springboot的程序執(zhí)行過(guò)一次作業(yè),狀態(tài)才會(huì)變?yōu)檎!?梢渣c(diǎn)擊“修改”按鈕,修改表達(dá)式來(lái)修改觸發(fā)器觸發(fā)的時(shí)間;
②job狀態(tài)顯示為正常時(shí),才可以點(diǎn)擊“觸發(fā)”按鈕直接觸發(fā);
這樣觸發(fā)之后,就是實(shí)時(shí)的觸發(fā)Job,我們就直接觀察JAVA程序的日志,看業(yè)務(wù)是否正常。
5.結(jié)束語(yǔ)
是不是很簡(jiǎn)單,再也不需要改配置文件重復(fù)Java服務(wù)了。