定時任務__@Xxl-JOB的使用


概述xxl-job框架

​ 首先我們要知道什么是XXL-JOB?

​ 官方簡介:XXL-JOB是一個分布式任務調度平台,其核心設計目標是開發迅速、學習簡單、輕量級、易擴展。現已開放源代碼並接入多家公司線上產品線,開箱即用

​ XXL-JOB的有點特性:

​ 1、簡單:支持通過Web頁面對任務進行CRUD操作,操作簡單,一分鍾上手;

​ 2、動態:支持動態修改任務狀態、啟動/停止任務,以及終止運行中任務,即時生效;
​ 3、調度中心HA(中心式):調度采用中心式設計,“調度中心”自研調度組件並支持集群部署,可保證調度中心HA;
​ 4、執行器HA(分布式):任務分布式執行,任務"執行器"支持集群部署,可保證任務執行HA;
​ 5、注冊中心: 執行器會周期性自動注冊任務, 調度中心將會自動發現注冊的任務並觸發執行。同時,也支持手動錄入執行器地址;
​ 6、彈性擴容縮容:一旦有新執行器機器上線或者下線,下次調度時將會重新分配任務;
​ 7、路由策略:執行器集群部署時提供豐富的路由策略,包括:第一個、最后一個、輪詢、隨機、一致性HASH、最不經常使用、最近最久未使用、故障轉移、忙碌轉移等;
​ 8、故障轉移:任務路由策略選擇"故障轉移"情況下,如果執行器集群中某一台機器故障,將會自動Failover切換到一台正常的執行器發送調度請求。
​ 9、阻塞處理策略:調度過於密集執行器來不及處理時的處理策略,策略包括:單機串行(默認)、丟棄后續調度、覆蓋之前調度;
​ 10、任務超時控制:支持自定義任務超時時間,任務運行超時將會主動中斷任務;
​ 11、任務失敗重試:支持自定義任務失敗重試次數,當任務失敗時將會按照預設的失敗重試次數主動進行重試;其中分片任務支持分片粒度的失敗重試;
​ 12、任務失敗告警;默認提供郵件方式失敗告警,同時預留擴展接口,可方便的擴展短信、釘釘等告警方式;
​ 13、分片廣播任務:執行器集群部署時,任務路由策略選擇"分片廣播"情況下,一次任務調度將會廣播觸發集群中所有執行器執行一次任務,可根據分片參數開發分片任務;
​ 14、動態分片:分片廣播任務以執行器為維度進行分片,支持動態擴容執行器集群從而動態增加分片數量,協同進行業務處理;在進行大數據量業務操作時可顯著提升任務處理能力和速度。
​ 15、事件觸發:除了"Cron方式"和"任務依賴方式"觸發任務執行之外,支持基於事件的觸發任務方式。調度中心提供觸發任務單次執行的API服務,可根據業務事件靈活觸發

​ …

是目前主流的分布式任務調度平台,許多公司的產品業務都有XXL-JOB的接入

開源社區使用

首先從GitHub上面將項目clone下來,如果網絡問題導致速度慢也可以從Gitee上面拉取

https://www.xuxueli.com/xxl-job/#/

 

xxl-job架構圖

 

 

 

(壓縮之后可以在文件中發現他的架構圖)

分布式任務項目的簡單搭建

在GitHub上獲取源代碼

 

 

 

解壓、導入開發工具

 

 

 

修改pom.xml文件:

 

 

主要修改為:配置新的JDK版本:JDK8(默認為JDK7)

 

1.修改Admin中的pmx文件

 

 

 

2.修改xxl-job-master的pom配置文件

 

兩個pom文件都要添加

<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-source-plugin</artifactId>
   <version>${maven-source-plugin.version}</version>
   <configuration>
   </configuration>
   <executions>
      <execution>
         <phase>package</phase>
         <goals>
            <goal>jar-no-fork</goal>
         </goals>
      </execution>
   </executions>
</plugin>

 

修改數據源

 

對應數據庫文件,可以導入到自己的數據庫中

       注意:如果庫中有同名的表了,需要到文件中注釋掉創建表的步驟

在數據庫中表的介紹

 

 

 

導入maven

 

 

結構相關介紹:

xxl-job-admin:調度中心

xxl-job-core:公共依賴

xxl-job-executor…:執行器

文件中有sql文件,運行生成庫表

  1. xxl_job_lock:任務調度鎖表;
  • xxl_job_group:執行器信息表,維護任務執行器信息;
  • xxl_job_info:調度擴展信息表: 用於保存XXL-JOB調度任務的擴展信息,如任務分組、任務名、機器地址、執行器、執行入參和報警郵件等等;
  • xxl_job_log:調度日志表: 用於保存XXL-JOB任務調度的歷史信息,如調度結果、執行結果、調度入參、調度機器和執行器等等;
  • xxl_job_log_report:調度日志報表:用戶存儲XXL-JOB任務調度日志的報表,調度中心報表功能頁面會用到;
  • xxl_job_logglue:任務GLUE日志:用於保存GLUE更新歷史,用於支持GLUE的版本回溯功能;
  • xxl_job_registry:執行器注冊表,維護在線的執行器和調度中心機器地址信息;
  • xxl_job_user:系統用戶表;

 

啟動服務

需要啟動兩個服務,第一個是圖形化界面的啟動,一個是任務SpringBoot定時任務類基本同等於我們項目中的任務類

啟動xxl-job-admin項目[圖形化界面]

路徑: D:\demo\xxl-job-master\xxl-job-admin\src\main\java\com\xxl\job\admin\XxlJobAdminApplication.java

 

 

 

啟動xxl-job-executor-sample-springboot項目[定時任務類] 

路徑: D:\demo\xxl-job-master\xxl-job-executor-samples\xxl-job-executor-sample-springboot\src\main\java\com\xxl\job\executor\XxlJobExecutorApplication.java

注意:其實我們項目中有兩個模板,啟動那個都可以,只是我用了SpringBoot,所以就只啟動了這個

 

 

 

啟動結果

 

 

 

訪問登錄頁面

 

輸入地址就可以訪問到對應的圖形化界面了

網址:http://localhost:8080/xxl-job-admin/

默認的管理員

賬號:admin

密碼:123456

 

登錄成功的頁面

 

 

 

 

自建分布式任務:Hello world

執行器主要分為兩種方式:

  1. 自動注冊
  2. 手動注冊

手動圖解[自動不弄,可以看視頻學習]

①創建執行器

 

 

 

②創建任務

 

 

 

③在任務后面--》操作按鈕--》開啟任務

 

 

 

④查看日志

 

 

 

 

執行器注意事項

1、確認pom文件中引入了 “xxl-job-core” 的maven依賴;

2、配置文件:

==>: xxl.job.admin.addresses配置(調度中心地址:例如http://127.0.0.1:8080/xxl-job-admin)

==>: xxl.job.executor.appname配置(執行器AppName,可視化界面添加執行器時需要)

==>: xxl.job.executor.port配置(執行器端口號,多個執行器時注意端口號不一致)

3、不同版本的機器地址輸入的格式不一樣

例如:

2.2版格式àhttp://IP地址:端口

1.0版格式àIP地址:端口

遇到的問題

問題1:執行器地址為空

 

 

 

原因--》執行器中 沒有地址

 

 

 

解決方案--》輸入地址:http://IP地址:端口

 

 

 

IP地址

 

 

 

端口

 

 

 

問題2:異常信息unknown code for readObject at 0x3c

1.錯誤提示無法找到執行器。
原因:需要啟動兩個項目 xxl-job-admin 、xxl-job-executor-samples (這里我用的是xxl-job-executor-sample-springboot)

2.調度成功了,但是執行不會停止,只能手動停止,執行結果是失敗的。
或者啟動時遇到以下的異常信息:
unknown code for readObject at 0x3c

原因:這種提示的錯誤一般出在admin配置address沒有配對。
檢查xxl-job-executor-springboot-example里面配置文件的xxl.job.admin.addresses=http://localhost:8080/xxl-job-admin
與啟動步驟2是否一致

 

 

 

 

 

完成!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM