第一步:
下載xxl-job源碼到本地,地址如下:
xxl-job: 一個分布式任務調度平臺,其核心設計目標是開發迅速、學習簡單、輕量級、易擴展。現已開放源代碼并接入多家公司線上產品線,開箱即用。
第二步:
創建xxl_job數據庫,執行tables_xxl_job.sql創建表,修改配置文件,修改數據庫地址和賬號密碼,郵箱提醒按需配置。本地測試運行OK,打包項目,部署服務器上。
第三步:
在需要集成xxl的項目中添加依賴,此處使用最新版,編寫配置文件,添加執行器等配置信息,代碼如下:
<dependency><groupId>com.xuxueli</groupId><artifactId>xxl-job-core</artifactId><version>3.2.0</version>
</dependency>
xxl:job:accessToken: ''admin:# 調度中心地址,必須包含 http://,我將job項目的端口改為了9099addresses: http://127.0.0.1:9099/xxl-job-adminexecutor:# 執行器端口,不可與調度端口重復port: 9999ip: 127.0.0.1# 執行器名稱,需唯一appname: xxl-job-executor-sample# 日志保留天數logretentiondays: 30logpath: /data/applogs/xxl-job/jobhandler
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;/**** @author Miki* @version JDK 17* @className XxlJobConfig* @date 2025/8/27* @description xxl-job 配置類*/
@Configuration
public class XxlJobConfig {private Logger log = 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;@Beanpublic XxlJobSpringExecutor xxlJobExecutor() {log.info(">>>>>>>>>>> xxl-job 配置初始化");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;}
}
第四步:
編寫調度方法,示例代碼如下:
import com.xxl.job.core.context.XxlJobHelper;
import com.xxl.job.core.handler.annotation.XxlJob;
import org.springframework.stereotype.Component;/**** @author Miki* @version JDK 17* @className JobHandler* @date 2025/8/27* @description 定時任務處理類*/
@Component
public class JobHandler {@XxlJob("demoJobHandler")public ReturnT<String> demoJobHandler() {// 獲取調度中心傳入的參數String param = XxlJobHelper.getJobParam();XxlJobHelper.log("XXL-JOB, 示例任務執行,參數: " + param);return ReturnT.ofSuccess();}
}
第五步:
job-admin注冊調度任務,設置調度時間,如下圖:
此版本自動注冊執行器有問題,采用了手動注冊,如下圖:
手動注冊執行的結果是調度成功但是執行結果失敗,暫未解決,可能是新版的原因,如下圖:
2.x.x版本的xxl-job可以自動注冊,無此問題。