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

2.概念
Elastic-Job是當當網開源的分布式任務調度解決方案,是業內使用較多的分布式調度解決方案。
Elastic-Job-Lite定位為輕量級無中心化解決方案,使用jar包的形式提供分布式任務的協調服務,,外部僅僅依賴Zookeeper。
今天跟大家分享的就是Elastic-Job-Lite,從如何搭建,到使用觸發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
編譯完畢后會生成一個壓縮包,這里的版本是以3.0.0.M1為例。
$ ls -lrt elastic-job-lite-console/target/elastic-job-lite-console-3.0.0.M1-SNAPSHOT.tar.gz
3.2部署啟動
$ 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
- 默認配置文件是auth.properties, 配置管理員及訪客用戶名及密碼
root.username=root
root.password=root
guest.username=guest
guest.password=guest
- 8899為默認端口號,可通過啟動腳本輸入-p自定義端口號。
3.3驗證
訪問http://localhost:8899/即可訪問控制臺

4.使用教程
當我們用SpringBoot實現了Job服務,我們可以根據提供的定時任務信息,在這個開源網頁平臺填入相應的信息,那么就可以管理對應的Job服務。
4.1配置注冊中心
1.左邊菜單點擊【全局配置】選中【注冊中心配置】,然后出現一個已配置列表,在列表的分頁顯示下方有個【添加】按鈕進行添加。

2.注冊中心信息填寫
- 注冊中心名稱:自己自定義填寫。
- 注冊中心地址:填寫對應服務的zk信息,多個用逗號分隔。
- 命名空間:填寫對應服務的zk命名空間namespace。
- 登錄憑證:可不填,默認zookeeper不需要填寫,除非設置了zookeeper相關信息。

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

4.2 查看這個zookeeper注冊中心對應的作業
上面配置完注冊中心后,會顯示對應的定時任務,在左側【作業操作】下點擊【作業維度】,即可查看當前掛在zookeeper的命名空間下的所有任務,提供刪除,編輯,觸發,失效等一系列功能。

4.3 不同狀態下對應的作業按鈕
①作業維度下Job已生效的狀態為正常,操作下有5個按鈕:修改、詳情、觸發、失效、終止;
②作業維度下Job狀態為已失效時,操作下有4個按鈕:修改、詳情、生效、終止;
③作業維度下Job狀態為分片待調整時,操作下有3個按鈕:修改、詳情、終止;
④作業維度下Job狀態為已下線時,操作下有2個按鈕:修改、刪除。
4.4 修改job的觸發時間
1.點擊作業維度最后一列操作下的"修改"按鈕進入修改作業頁面,如圖所示:

2.修改“Cron表達式”里的時間格式,改成你想要執行的時間策略,提交修改。
這樣到了指定的時間,就會執行這個作業Job,是不是很簡單。
4.5 實時觸發Job
①處于分片待調整狀態的Job,需要更改Cron表達式后程序執行了一次或者springboot的程序執行過一次作業,狀態才會變為正常。可以點擊“修改”按鈕,修改表達式來修改觸發器觸發的時間;
②job狀態顯示為正常時,才可以點擊“觸發”按鈕直接觸發;
這樣觸發之后,就是實時的觸發Job,我們就直接觀察JAVA程序的日志,看業務是否正常。
5.結束語
是不是很簡單,再也不需要改配置文件重復Java服務了。