一、引入执行器运行环境依赖
xml
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-job-core</artifactId>
<version>${xxljob.version}</version>
</dependency>
xxljob.version 根据目前xxl-job调度中心的版本进行引入
二、执行器配置
springboot配置文件application.yml
yaml
xxl:
job:
admin:
addresses: http://localhost:8081/xxl-job-admin # 调度中心地址(多个用逗号分隔)
executor:
appname: my-job-executor # 执行器名称(需与调度中心配置一致)
address: # 执行器地址(默认为空,自动注册)
ip: # 执行器IP(默认为空,自动获取)
port: 9999 # 执行器端口(默认9999,多个执行器需不同)
logpath: /data/applogs/xxl-job/jobhandler # 任务日志路径
logretentiondays: 30 # 日志保留天数
accessToken: # 通信令牌(调度中心与执行器需一致,默认为空)
三、xxlJob配置类
java
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;
@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.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
public XxlJobSpringExecutor xxlJobExecutor() {
logger.info(">>>>>>>>>>> xxl-job config init.");
XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
xxlJobSpringExecutor.setAdminAddresses(adminAddresses);
xxlJobSpringExecutor.setAppname(appname);
xxlJobSpringExecutor.setPort(port);
xxlJobSpringExecutor.setAccessToken(accessToken);
xxlJobSpringExecutor.setLogPath(logPath);
xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);
return xxlJobSpringExecutor;
}
}
四、编写Bean模式执行任务
通过@XxlJob注解定义任务方法
直接在 Spring Bean 中定义任务方法,通过注解指定任务标识(value需唯一)
java
import com.xxl.job.core.handler.annotation.XxlJob;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
@Component
public class DemoJobHandler {
private static Logger logger = LoggerFactory.getLogger(DemoJobHandler.class);
/**
* 简单任务示例
*/
@XxlJob("demoSimpleJob") // 任务标识,需与调度中心配置的JobHandler一致
public void demoSimpleJob() throws Exception {
logger.info("XXL-Job 简单任务执行中...");
// 业务逻辑:如数据同步、定时计算等
System.out.println("任务执行成功!");
}
/**
* 带参数的任务示例
*/
@XxlJob("demoParamJob")
public void demoParamJob() throws Exception {
// 获取调度中心传递的参数
String param = XxlJobHelper.getJobParam();
logger.info("收到参数:{}", param);
// 业务逻辑
}
}