官方文檔:https://www.xuxueli.com/xxl-job/
之前和分享了一下對(duì)xxl-job的簡(jiǎn)單理解,這次聊一聊xxl-job任務(wù)注冊(cè)流程和簡(jiǎn)單的使用方法。
一、XXL-JOB調(diào)度數(shù)據(jù)庫(kù)表如下:
-?xxl_job_lock:任務(wù)調(diào)度鎖表;
-?xxl_job_group:執(zhí)行器信息表,維護(hù)任務(wù)執(zhí)行器信息;
-?xxl_job_info:調(diào)度擴(kuò)展信息表:?用于保存XXL-JOB調(diào)度任務(wù)的擴(kuò)展信息,如任務(wù)分組、任務(wù)名、機(jī)器地址、執(zhí)? 行器、執(zhí)行入?yún)⒑蛨?bào)警郵件等等;
-?xxl_job_log:調(diào)度日志表:?用于保存XXL-JOB任務(wù)調(diào)度的歷史信息,如調(diào)度結(jié)果、執(zhí)行結(jié)果、調(diào)度入?yún)ⅰ⒄{(diào)度機(jī) 器和執(zhí)行器等等;
-?xxl_job_log_report:調(diào)度日志報(bào)表:用戶(hù)存儲(chǔ)XXL-JOB任務(wù)調(diào)度日志的報(bào)表,調(diào)度中心報(bào)表功能頁(yè)面會(huì)用到;
-?xxl_job_logglue:任務(wù)GLUE日志:用于保存GLUE更新歷史,用于支持GLUE的版本回溯功能;
-?xxl_job_registry:執(zhí)行器注冊(cè)表,維護(hù)在線(xiàn)的執(zhí)行器和調(diào)度中心機(jī)器地址信息;
-?xxl_job_user:系統(tǒng)用戶(hù)表;
之所以先介紹表的目的在于,XXL-JOB所有的操作都是基于這幾張表的。
二、增加執(zhí)行器
2.1 UI配置執(zhí)行器
1、"調(diào)度中心OnLine:"右側(cè)顯示在線(xiàn)的"調(diào)度中心"列表,?任務(wù)執(zhí)行結(jié)束后,?將會(huì)以failover的模式進(jìn)行回調(diào)調(diào)度中心通知執(zhí)行結(jié)果,?避免回調(diào)的單點(diǎn)風(fēng)險(xiǎn);
2、"執(zhí)行器列表"?中顯示在線(xiàn)的執(zhí)行器列表,?可通過(guò)"OnLine?機(jī)器"查看對(duì)應(yīng)執(zhí)行器的集群機(jī)器。
AppName:?是每個(gè)執(zhí)行器集群的唯一標(biāo)示AppName,?執(zhí)行器會(huì)周期性以AppName為對(duì)象進(jìn)行自動(dòng)注冊(cè)??赏ㄟ^(guò)該配置自動(dòng)發(fā)現(xiàn)注冊(cè)成功的執(zhí)行器,?供任務(wù)調(diào)度時(shí)使用;
名稱(chēng):?執(zhí)行器的名稱(chēng),?因?yàn)锳ppName限制字母數(shù)字等組成,可讀性不強(qiáng),?名稱(chēng)為了提高執(zhí)行器的可讀性;
排序:?執(zhí)行器的排序,?系統(tǒng)中需要執(zhí)行器的地方,如任務(wù)新增,?將會(huì)按照該排序讀取可用的執(zhí)行器列表;
注冊(cè)方式:調(diào)度中心獲取執(zhí)行器地址的方式;
自動(dòng)注冊(cè):執(zhí)行器自動(dòng)進(jìn)行執(zhí)行器注冊(cè),調(diào)度中心通過(guò)底層注冊(cè)表可以動(dòng)態(tài)發(fā)現(xiàn)執(zhí)行器機(jī)器地址;
手動(dòng)錄入:人工手動(dòng)錄入執(zhí)行器的地址信息,多地址逗號(hào)分隔,供調(diào)度中心使用;
機(jī)器地址:"注冊(cè)方式"為"手動(dòng)錄入"時(shí)有效,支持人工維護(hù)執(zhí)行器的地址信息;
2.2 調(diào)度中心配置執(zhí)行器
程序配置執(zhí)行器比較簡(jiǎn)單,只是一個(gè)單純的web接口,做了必要的參數(shù)校驗(yàn),直接存入xxl_job_group表中
同時(shí)xxl_job_registry表中維護(hù)了執(zhí)行器存活機(jī)器的相關(guān)信息,數(shù)據(jù)是動(dòng)態(tài)的,會(huì)新增和物理刪除。
三、增加任務(wù)
3.1 UI新建任務(wù)
登錄調(diào)度中心,點(diǎn)擊下圖所示“新建任務(wù)”按鈕,新建示例任務(wù)。然后,參考下面截圖中任務(wù)的參數(shù)配置,點(diǎn)擊保存。


值得一提的是,一個(gè)任務(wù)只能對(duì)應(yīng)一個(gè)執(zhí)行器,反之亦然,一個(gè)執(zhí)行器可以擁有對(duì)個(gè)任務(wù)
3.2 執(zhí)行器實(shí)現(xiàn)
客戶(hù)端實(shí)必須實(shí)現(xiàn)對(duì)應(yīng)的接口,如果是spring項(xiàng)目,增加相應(yīng)地注解即可
3.3 調(diào)度中心增加任務(wù)
程序配置執(zhí)行器比較簡(jiǎn)單,是一個(gè)單純的web接口
而后做了大量的的參數(shù)校驗(yàn),確認(rèn)執(zhí)行器存在,最后存入xxl_job_group表中,等待后續(xù)的執(zhí)行,流程也相對(duì)簡(jiǎn)單。
四、總結(jié)
任務(wù)新增流程相對(duì)比較簡(jiǎn)單,執(zhí)行器代碼侵入性也比較低,最主要明白幾張表的作用,和執(zhí)行器與任務(wù)之間的關(guān)系,后面會(huì)分享一下,任務(wù)是具體如何執(zhí)行的。