Springboot 项目集成 xxl-job
1、前言
Springboot 集成 xxl-job 的前提是,xxl-job服务端已经部署完成。
使用 docker 安装 xxl-job 可以参考:docker安装xxl-job
2、引入pom依赖
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-job-core</artifactId>
<version>2.4.0</version>
</dependency>
3、新建配置类XxlJobConfig
import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Slf4j
@Configuration
public class XxlJobConfig {
@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
public XxlJobSpringExecutor xxlJobExecutor() {
log.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;
}
}
4、登录xxl-job-admin,新建执行器
4、在项目配置文件中,加入执行器配置
xxl:
job:
# accessToken需要和服务端保持一致,服务端如果为空,则这里也配置为空
accessToken: default_token
executor:
# 执行器名称,和服务端保持一致
appname: java-dev
# ip为空默认localhost
ip:
# 任务log保存路径和保存天数
logpath: /data/applogs/xxl-job/jobhandler
logretentiondays: 15
port: 9998
# xxl-job-admin地址
admin:
addresses: http://localhost:8081/xxl-job-admin
5、在项目中,新建测试Job
@Slf4j
@Component
public class SyncFileLoadingStatusTask extends IJobHandler {
@Override
@XxlJob("syncFileLoadingStatusTask")
public void execute() throws Exception {
log.info("同步文件解析状态 start...");
// 处理业务逻辑
// ....
}
}
6、启动项目
出现以上日志,说明xxl-job客户端启动成功,并成功连接到服务端。
从xxl-job-admin也可以看到客户端节点:
7、在 xxl-job-admin 新增 job,并启动
新增Job:
启动、停止、查询日志: