分布式任務排程平台XXL-Job搭建
下載下傳:
https://github.com/xuxueli/xxl-job
下載下傳 然後倒入到自己的工程裡面
引入後:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIn5GcuITMzQTMxgTN50SOxYTO0czMxATOwETM4EDMy0SOwcTO3ETMvwVMxgTMwIzLclDM3kzNxEzLcd2bsJ2Lc12bj5ycn9Gbi52YugTMwIzZtl2Lc9CX6MHc0RHaiojIsJye.png)
導入資料:跑一邊
導入:
修改:
Window -->show view-->other-->Servers
把admin引入
方法:
右鍵:
點選add and remove 即可
啟動 XXL-Job admin平台:
通路:http://localhost:8080/xxl-job-admin/
下面用戶端的demo (Spring boot 的 對接到Admin平台)
上面項目中整合XXL-Job 類繼承 IJobHandler類。然後通過注解 注冊到XXL-Job admin 容器中去 對接到平台上去 value是注冊上去的名稱
下面:
### xxl-job admin address list, such as "http://address" or "http://address01,http://address02"
xxl.job.admin.addresses=http://127.0.0.1:8080/xxl-job-admin ## 這是admin的位址
### xxl-job executor address
xxl.job.executor.appname=toov5-job #執行器的名字 起了個名字
下面分别是 spring boot的 job服務别名 位址集合
點選儲存
啟動執行器:
啟動執行器後,會将伺服器本地資訊注冊到admin平台。資訊包括: 是否存活 定義的注解Value的值 (在先建立任務裡面都會有記錄了,下面的操作中可以選擇的)
然後去任務管理李: 建立任務
添加相關資訊後,儲存。任務就開始根據預定的時間規則去運作了
可以檢視日志:
分析原理:
在XXL-JOB觸發規則,查詢對應執行器(實際定時Job執行位址),然後再使用XXL-JOB發送請求到實際的定時JOB任務位址去執行。使用demoJobHandler名稱查找對應jvm伺服器上JobHandler容器。
擷取到類的資訊,反射進行執行。使用demoJobHandler名稱查找對應的jvm伺服器上@JobHandler容器擷取到類的資訊,再使用反射機制執行
注解底層實作:
@JobHandler(value = "demoJobHandler") //job 注冊到容器中的名稱 下面的方法是執行的定時job 底層實作 value demoJobHandler 名稱 對應存放類的class位址。然後反射擷取方法執行之
原理:
搭建xxl-job平台 ,然後建立執行器。netty會幫助建立服務端口号。執行器啟動時候,會把服務資訊注冊到xxl-job平台。
建立執行器(實際任務位址)
然後任務管理 新增任務 jobhandler Corn表達式
首先在xxl-job平台出發job 然後擷取執行位址