xxl-job的github地址
https://github.com/xuxueli/xxl-job
xxl-job的文檔地址
http://www.xuxueli.com/xxl-job/#/
傳統(tǒng)的job,在tomcat服務集群時,在每臺jvm都會配置相同的job配置,并且配置都是寫死的,任務時間到時,每臺服務都會執(zhí)行任務,自身無法保證冪等性,如果想保證冪等性需要用到分布式鎖或者通過標識來判斷這個服務的job是否執(zhí)行(true和false標識),并且無法實現負載策略
XXL-JOB是一個輕量級分布式任務調度平臺
支持job群集容錯,負載均衡策略,job補償(實現自動重試,多次失敗會發(fā)郵件通知),job日志記錄,動態(tài)配置job規(guī)則
XXL-JOB搭建
https://github.com/xuxueli/xxl-job上下載xxl-job的源碼項目

下載后解壓,使用idea打開

xxl-job-admin模塊是xxl-job服務端的可視化管理平臺
xxl-job-core模塊是xxl-job的源碼
xxl-job-executor-samples模塊是job客戶端的例子代碼(我們自己寫的業(yè)務job)
步驟1:首先執(zhí)行xxl-job項目的sql創(chuàng)建表和初始化默認的記錄(默認使用mysql),因為xxl-job的數據是保存在數據庫的(創(chuàng)建的執(zhí)行器信息、job任務的服務地址、admin登陸的賬號密碼等信息)

步驟二:修改xxl-job-admin的application.properties的數據庫賬號和密碼,修成自己數據庫的賬號密碼,其他配置用不上的可以使用默認的

步驟三:目前最新版本admin模塊也是使用springboot啟動的,所以直接運行啟動類就行了

啟動后打開進入admin可視化管理界面
http://127.0.0.1:8080/xxl-job-admin

以上的xxl-job的admin平臺服務已經搭建好了,下面我們先創(chuàng)建自己的定時任務,我使用xxl-job源碼中的xxl-job-executor-samples項目作為例子

使用xxl-job-executor-samples中的xxl-job-executor-sample-springboot工程(相當于我們進行開發(fā)的項目代碼)
需要注意yml配置文件的xxl.job配置

上面配置的端口,等一下admin平臺創(chuàng)建執(zhí)行器時需要用到。
我們自己創(chuàng)建一個job任務

創(chuàng)建的job任務類需要加上@JobHandler(value = "myJob")注冊并承繼IJobHandler類
@JobHandler(value = "myJob")這個注解的作用是等下通過admin平臺創(chuàng)建任務時需要指定到哪個任務代碼的名稱這個項目的例子也是springboot的,直接啟動類啟動就行了。
admin平臺和我們寫的job代碼的服務都啟動好之后,我們通過admin平臺關聯(lián)需要執(zhí)行任務的服務器地址和任務
1.在執(zhí)行器管理創(chuàng)建執(zhí)行器(配置job任務的服務地址)

機器地址的端口就是這里配置的端口

這個執(zhí)行器的所創(chuàng)建的任務都會從配置機器地址去找
2.在任務管理為剛剛創(chuàng)建的執(zhí)行器創(chuàng)建任務(給對應的服務器關聯(lián)對應的執(zhí)行任務)

這的JobHandler就是與我們的定時任務代碼的@JobHandler(value = "myJob")對應

保存好之后點擊操作的啟動就會啟動任務,等Cron到時間就會通過執(zhí)行器機器地址并通任務的JobHandler的名稱反射找到找到對應服務的對應定時任務類的execute方法來執(zhí)行


就會有執(zhí)行效果
如果admin需要群集,官方推薦的方法是:
調度中心支持集群部署,提升調度系統(tǒng)容災和可用性。
調度中心集群部署時,幾點要求和建議:
DB配置保持一致;
登陸賬號配置保持一致;
集群機器時鐘保持一致(單機集群忽視);
建議:推薦通過nginx為調度中心集群做負載均衡,分配域名。調度中心訪問、執(zhí)行器回調配置、調用API服務等操作均通過該域名進行。