第一步:
下载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可以自动注册,无此问题。