前言
最新開始研究xxl-job,之前搞過spring 內建的,現在來說下與springboot內建的,還是有些不一樣的。
正文
學習通道
xxl-job 源碼和文檔位址:通路連結
部署排程中心
初始化資料庫腳本
在github(https://github.com/xuxueli/xxl-job)下載下傳xxl-job 的源碼 ,用idea打開後項目目錄結構如下圖所示:

在db檔案夾下找到*.sql的腳本檔案,在本地資料庫(因為我把定時器放在本地)執行腳本,建立xxl-job的資料庫,如下圖(截圖中為可視化mysql資料的工具 Navicat):
配置排程中心
找到xxl-job xxl-job-admin 工程下的屬性檔案,修改資料庫配置為剛剛配置的本地資料源:主要修改url,username,password,如下圖:
提示:這塊兒還可以配置報警郵箱,當定時任務執行出現問題了,郵箱的主人會第一時間收到它的通知;
部署排程中心
部署排程中心(xxl-job-admin),通路排程中心的管理控制頁面:可以直接在idea 中啟動程式,也可以将程式打包(maven package),用 “java -jar jar包名稱 -d”等背景啟動排程中心;
啟動成功後,根據日志提示資訊(http://localhost:8080/xxl-job-admin)通路管理頁面:賬号 admin | 預設初始密碼 123456
登入成功,顯示頁面(備注:下方截圖是本地已經配置好的排程中心及定時任務)
建立執行器
因本地工程是springboot的,是以建立一個Springboot版本的執行器;
導入maven 依賴
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-job-core</artifactId>
<version>2.1.1-SNAPSHOT</version>
</dependency>
配置yml檔案或屬性檔案 (此處以yml檔案為例)
xxl:
job:
admin:
# 位址為剛剛配置的排程中心的通路位址
addresses: http://127.0.0.1:8080/xxl-job-admin
executor:
# 自定義appName(執行器名稱)
appname: xxl-job-appName
# ip 可以寫 (程式跑在的機器ip上),也可以不寫
ip:
port: 9999
# 執行器日志檔案存儲路徑
logpath: /data/applogs/xxl-job/jobhandler
# 設定日志過期時間 -1表示永不過期
logretentiondays: -1
accessToken:
編寫配置檔案,讀取yml檔案剛剛配置的屬性
package com.cxqz.nlp.config;
import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* xxl-job config
*
* @author xuxueli 2017-04-28
*/
@Configuration
public class XxlJobConfig {
private Logger logger = LoggerFactory.getLogger(XxlJobConfig.class);
@Value("${xxl.job.admin.addresses}")
private String adminAddresses;
@Value("${xxl.job.executor.appname}")
private String appName;
@Value("${xxl.job.executor.ip}")
private String ip;
@Value("${xxl.job.executor.port}")
private int port;
@Value("${xxl.job.accessToken}")
private String accessToken;
@Value("${xxl.job.executor.logpath}")
private String logPath;
@Value("${xxl.job.executor.logretentiondays}")
private int logRetentionDays;
@Bean(initMethod = "start", destroyMethod = "destroy")
public XxlJobSpringExecutor xxlJobExecutor() {
logger.info(">>>>>>>>>>> xxl-job config init.");
XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
xxlJobSpringExecutor.setAdminAddresses(adminAddresses);
xxlJobSpringExecutor.setAppName(appName);
xxlJobSpringExecutor.setIp(ip);
xxlJobSpringExecutor.setPort(port);
xxlJobSpringExecutor.setAccessToken(accessToken);
xxlJobSpringExecutor.setLogPath(logPath);
xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);
return xxlJobSpringExecutor;
}
}
編寫任務
(任務可以了解為想要定時任務執行的東西,這裡我調用的是使用者等級更新接口)
@JobHandler(value = "testJobHandler")
@Component
public class TestHandler extends IJobHandler {
@Autowired
private UserService userService;
@Override
public ReturnT<String> execute(String param) throws Exception {
XxlJobLogger.log(" >>使用者等級更新任務開始執行....");
try {
//自定義調用接口
userService.updateLevel();
return SUCCESS;
} catch (Exception e) {
XxlJobLogger.log(e);
return FAIL;
}
}
}
啟動執行器
啟動Springboot 程式,以便排程中心可以找到執行器;
建立執行器
在調用中心中建立執行器
打開管理頁面,到【執行器管理】中建立執行器,如下圖:
填寫執行器資訊,如下圖:
設定 【自動注冊】後的執行器位址:
新增任務
新增任務,打開【任務管理】,選擇剛添加的【測試執行器】,選擇【新增】,如下圖:
添加任務資訊,綁定程式中寫的JobHandler,如下圖:
執行(啟動)任務,檢視執行情況
現在可以啟動任務了,找到剛添加的任務,選擇【執行一次】或【啟動】,這裡我選擇了【執行一次】:
想要檢視執行情況,選擇上圖中的【查詢日志】,将會看到“排程備注”和“執行日志”;
排程備注 詳情:
執行日志 詳情:
這樣,利用定時任務架構執行任務就成功了~
總結
Springboot 內建 xxl-job 完整版教程到此結束,更多内容請移步到xxl-job官網 或者下方留言 也行啊,大概一年前在公司分享過xxl-job,時間過的真快~
PS: 剛剛發現【XXL社群】還有很多項目,相當的厲害鴨!