目錄
- [XXL-Job的安裝和配置]
- [下載安裝包]
- [解壓安裝包]
- [創(chuàng)建數(shù)據(jù)庫(kù)]
- [導(dǎo)入數(shù)據(jù)表]
- [修改配置文件]
- [啟動(dòng)調(diào)度中心和執(zhí)行器]
- [XXL-Job的基本使用]
- [創(chuàng)建任務(wù)]
- [啟動(dòng)任務(wù)]
- [停止任務(wù)]
- [監(jiān)控任務(wù)]
- [XXL-Job的高級(jí)使用]
- [使用調(diào)度中心]
- [分片廣播]
- [任務(wù)路由]
- [XXL-Job的應(yīng)用實(shí)例]
- [數(shù)據(jù)同步場(chǎng)景]
- [報(bào)表生成場(chǎng)景]
- [數(shù)據(jù)備份場(chǎng)景]
- [XXL-Job的擴(kuò)展開發(fā)]
- [自定義任務(wù)處理器]
- [自定義觸發(fā)器]
- [自定義報(bào)警]
- [XXL-Job的集成與部署]
- [集成到Spring Boot]
- [集成到Spring Cloud]
- [部署和管理]
XXL-Job是一款開源的分布式任務(wù)調(diào)度系統(tǒng),可以實(shí)現(xiàn)任務(wù)的定時(shí)執(zhí)行、分布式執(zhí)行、任務(wù)調(diào)度監(jiān)控等功能。下面是安裝和配置XXL-Job的步驟:
- 下載安裝包
從XXL-Job的官方網(wǎng)站(https://www.xuxueli.com/xxl-job/)下載最新版本的安裝包。
- 解壓安裝包
在服務(wù)器上解壓下載的壓縮包,可以使用以下命令:
tar -zxvf xxl-job-2.x.x.tar.gz
- 創(chuàng)建數(shù)據(jù)庫(kù)
XXL-Job需要使用MySQL數(shù)據(jù)庫(kù)存儲(chǔ)任務(wù)信息,需要先創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)??梢允褂靡韵旅睿?/p>
mysql -hlocalhost -uroot -p
CREATE DATABASE xxl_job;
- 導(dǎo)入數(shù)據(jù)表
將XXL-Job安裝包中的doc/db/tables_xxl_job.sql腳本導(dǎo)入到xxl_job數(shù)據(jù)庫(kù)中,可以使用以下命令:
mysql -hlocalhost -uroot -p xxl_job < /path/to/tables_xxl_job.sql
- 修改配置文件
修改文件夾/conf下的xxl-job-admin.properties和xxl-job-executor.properties配置文件,分別配置調(diào)度中心和執(zhí)行器的相關(guān)信息,包括數(shù)據(jù)庫(kù)連接、端口號(hào)、日志路徑等。
例如,修改xxl-job-admin.properties中的以下配置:
# xxl-job admin address list, such as "http://address1/xxl-job-admin,http://address2/xxl-job-admin"
xxl.job.admin.addresses=http://localhost:8080/xxl-job-admin
# xxl-job access token
xxl.job.accessToken=
# xxl-job executor registry name
xxl.job.executor.appname=xxl-job-executor-sample
# xxl-job executor address
xxl.job.executor.address=http://localhost:9999/xxl-job-executor
# xxl-job executor IP
xxl.job.executor.ip=
# xxl-job executor port
xxl.job.executor.port=9999
# xxl-job executor log path
xxl.job.executor.logpath=/data/applogs/xxl-job/jobhandler
# xxl-job executor log retention days
xxl.job.executor.logretentiondays=30
- 啟動(dòng)調(diào)度中心和執(zhí)行器
在安裝好XXL-Job并配置好相關(guān)信息后,可以通過以下命令啟動(dòng)調(diào)度中心和執(zhí)行器:
sh bin/start.sh admin
sh bin/start.sh executor
- 驗(yàn)證安裝
在瀏覽器中訪問http://localhost:8080/xxl-job-admin/,可以看到XXL-Job的調(diào)度中心界面,輸入用戶名和密碼(默認(rèn)為admin/123456)后登錄。如果可以正常登錄并顯示調(diào)度中心頁(yè)面,則表示XXL-Job已經(jīng)安裝成功。
- 配置執(zhí)行器
在調(diào)度中心中添加執(zhí)行器,點(diǎn)擊左側(cè)菜單中的執(zhí)行器管理,然后點(diǎn)擊新增按鈕,填寫執(zhí)行器信息,例如:
執(zhí)行器名稱:xxl-job-executor-sample
執(zhí)行器地址:http://localhost:9999/xxl-job-executor
執(zhí)行器端口:9999
執(zhí)行器日志路徑:/data/applogs/xxl-job/jobhandler
點(diǎn)擊保存后,執(zhí)行器就可以被調(diào)度中心管理了。
- 測(cè)試任務(wù)
在調(diào)度中心中創(chuàng)建一個(gè)簡(jiǎn)單的任務(wù),例如:
任務(wù)名稱:testJob
任務(wù)描述:測(cè)試任務(wù)
任務(wù)路由策略:第一個(gè)
任務(wù)執(zhí)行器:xxl-job-executor-sample
任務(wù)執(zhí)行參數(shù):{"name":"test"}
Cron表達(dá)式:0/5 * * *2 * ? *
點(diǎn)擊保存后,可以手動(dòng)啟動(dòng)該任務(wù),或者等待定時(shí)觸發(fā)執(zhí)行。
- 監(jiān)控執(zhí)行情況
在調(diào)度中心中可以查看任務(wù)的執(zhí)行情況,包括執(zhí)行次數(shù)、執(zhí)行狀態(tài)、執(zhí)行日志等??梢酝ㄟ^左側(cè)菜單中的任務(wù)監(jiān)控、任務(wù)日志、報(bào)警記錄等功能查看任務(wù)的詳細(xì)信息。
- 高級(jí)使用
除了基本的任務(wù)調(diào)度功能外,XXL-Job還提供了一些高級(jí)功能,例如:
- 使用調(diào)度中心:可以將任務(wù)分發(fā)到多個(gè)執(zhí)行器上執(zhí)行,提高任務(wù)執(zhí)行效率。
- 分片廣播:將任務(wù)拆分成多個(gè)子任務(wù)并在多個(gè)執(zhí)行器上并行執(zhí)行,提高任務(wù)執(zhí)行速度。
- 任務(wù)路由:根據(jù)任務(wù)的路由策略將任務(wù)分發(fā)到指定的執(zhí)行器上執(zhí)行。
這些高級(jí)功能可以通過調(diào)度中心的相關(guān)配置來實(shí)現(xiàn)。
- 應(yīng)用實(shí)例
XXL-Job可以應(yīng)用于多種場(chǎng)景,例如:
- 數(shù)據(jù)同步場(chǎng)景:可以定時(shí)同步數(shù)據(jù)到其他系統(tǒng)中。
- 報(bào)表生成場(chǎng)景:可以定時(shí)生成報(bào)表并發(fā)送給相關(guān)人員。
- 數(shù)據(jù)備份場(chǎng)景:可以定時(shí)備份數(shù)據(jù)并存儲(chǔ)到指定的位置。
下面以數(shù)據(jù)同步場(chǎng)景為例,說明如何使用XXL-Job實(shí)現(xiàn)數(shù)據(jù)同步:
- 創(chuàng)建一個(gè)數(shù)據(jù)同步任務(wù),填寫任務(wù)名稱、任務(wù)描述、任務(wù)路由策略、任務(wù)執(zhí)行器、任務(wù)執(zhí)行參數(shù)等信息,例如:
任務(wù)名稱:syncData
任務(wù)描述:同步數(shù)據(jù)到其他系統(tǒng)
任務(wù)路由策略:第一個(gè)
任務(wù)執(zhí)行器:xxl-job-executor-sample
任務(wù)執(zhí)行參數(shù):{"source":"db1","target":"db2"}
Cron表達(dá)式:0 0/5 * * * ? *
- 在任務(wù)執(zhí)行器中實(shí)現(xiàn)任務(wù)處理邏輯,例如:
public class SyncDataTask implements IJobHandler {
@Override
public ReturnT<String> execute(String param) throws Exception {
JSONObject jsonObj = JSON.parseObject(param);
String source = jsonObj.getString("source");
String target = jsonObj.getString("target");
// 同步數(shù)據(jù)的邏輯
...
return ReturnT.SUCCESS;
}
}
- 在執(zhí)行器的配置文件中添加自定義任務(wù)處理器,例如:
# xxl-job executor job handler13. XXL-Job的擴(kuò)展開發(fā)
除了使用XXL-Job提供的基本功能外,還可以通過擴(kuò)展開發(fā)來實(shí)現(xiàn)更加個(gè)性化的需求。XXL-Job提供了多種擴(kuò)展開發(fā)方式,包括:
- 自定義任務(wù)處理器:可以自定義任務(wù)執(zhí)行邏輯,實(shí)現(xiàn)更加復(fù)雜的業(yè)務(wù)需求。
- 自定義觸發(fā)器:可以自定義任務(wù)觸發(fā)方式,例如基于事件的觸發(fā)器。
- 自定義報(bào)警:可以自定義報(bào)警方式,例如基于微信、短信等方式的報(bào)警。
下面以自定義任務(wù)處理器為例,說明如何擴(kuò)展開發(fā)XXL-Job:
XXL-Job可以應(yīng)用于多種場(chǎng)景,例如:
數(shù)據(jù)同步場(chǎng)景:可以定時(shí)同步數(shù)據(jù)到其他系統(tǒng)中。
報(bào)表生成場(chǎng)景:可以定時(shí)生成報(bào)表并發(fā)送給相關(guān)人員。
數(shù)據(jù)備份場(chǎng)景:可以定時(shí)備份數(shù)據(jù)并存儲(chǔ)到指定的位置。
下面以數(shù)據(jù)同步場(chǎng)景為例,說明如何使用XXL-Job實(shí)現(xiàn)數(shù)據(jù)同步:
創(chuàng)建一個(gè)數(shù)據(jù)同步任務(wù),填寫任務(wù)名稱、任務(wù)描述、任務(wù)路由策略、任務(wù)執(zhí)行器、任務(wù)執(zhí)行參數(shù)等信息,例如:
任務(wù)名稱:syncData
任務(wù)描述:同步數(shù)據(jù)到其他系統(tǒng)
任務(wù)路由策略:第一個(gè)
任務(wù)執(zhí)行器:xxl-job-executor-sample
任務(wù)執(zhí)行參數(shù):{"source":"db1","target":"db2"}
Cron表達(dá)式:0 0/5 * * * ? *
在任務(wù)執(zhí)行器中實(shí)現(xiàn)任務(wù)處理邏輯,例如:
java
public class SyncDataTask implements IJobHandler {
@Override
public ReturnT<String> execute(String param) throws Exception {
JSONObject jsonObj = JSON.parseObject(param);
String source = jsonObj.getString("source");
String target = jsonObj.getString("target");
// 同步數(shù)據(jù)的邏輯
...
return ReturnT.SUCCESS;
}
}
在執(zhí)行器的配置文件中添加自定義任務(wù)處理器,例如:
# xxl-job executor job handler
xxl.job.executor.jobhandler=myJobHandler
在任務(wù)配置中指定自定義任務(wù)處理器,例如:
任務(wù)名稱:myJob
任務(wù)描述:自定義任務(wù)
任務(wù)路由策略:第一個(gè)
任務(wù)執(zhí)行器:xxl-job-executor-sample
任務(wù)執(zhí)行參數(shù):{"param1":"value1","param2":"value2"}
Cron表達(dá)式:0/5 * * * * ? *
任務(wù)處理器:myJobHandler
在自定義任務(wù)處理器中實(shí)現(xiàn)任務(wù)處理邏輯,例如:
java
public class MyJobHandler implements IJobHandler {
@Override
public ReturnT<String> execute(String param) throws Exception {
JSONObject jsonObj = JSON.parseObject(param);
String param1 = jsonObj.getString("param1");
String param2 = jsonObj.getString("param2");
// 自定義任務(wù)處理邏輯
...
return ReturnT.SUCCESS;
}
}
XXL-Job的集成與部署
XXL-Job可以集成到Spring Boot和Spring Cloud中使用,也可以使用Docker等容器技術(shù)進(jìn)行部署和管理。下面以集成到Spring Boot為例,說明如何集成和部署XXL-Job:
添加Maven依賴
在Spring Boot項(xiàng)目的pom.xml文件中添加以下依賴:
xml
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-job-core</artifactId>
<version>${xxl.job.version}</version>
</dependency>
配置XXL-Job
在Spring Boot項(xiàng)目的配置文件中添加以下配置:
cos
# xxl-job admin address list, such as "http://address1/xxl-job-admin,http://address2/xxl-job-admin"
xxl.job.admin.addresses=http://localhost:8080/xxl-job-admin
# xxl-job access token
xxl.job.accessToken=
# xxl-job executor registry name
xxl.job.executor.appname=xxl-job-executor-sample
# xxl-job executor address
xxl.job.executor.address=http://localhost:9999/xxl-job-executor
# xxl-job executor IP
xxl.job.executor.ip=
# xxl-job executor port
xxl.job.executor.port=9999
# xxl-job executor log path
xxl.job.executor.logpath=/data/applogs/xxl-job/jobhandler
# xxl-job executor log retention days
xxl.job.executor.logretentiondays=30
實(shí)現(xiàn)任務(wù)處理邏輯
在Spring Boot項(xiàng)目中實(shí)現(xiàn)任務(wù)處理邏輯,例如:
java
@Component
public class MyJobHandler {
@XxlJob("myJobHandler")
public ReturnT<String> myJobHandler(String param) {
// 自定義任務(wù)處理邏輯
...
return ReturnT.SUCCESS;
}
}
啟動(dòng)執(zhí)行器
在Spring Boot項(xiàng)目中添加執(zhí)行器啟動(dòng)類,例如:
java
@SpringBootApplication
@EnableXxlJob
public class XxlJobExecutorApplication {
public static void main(String[] args) {
SpringApplication.run(XxlJobExecutorApplication.class, args);
}
}