1、XXL-JOB是什么
XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。
2、文档地址
github github.com/xuxueli/xxl…
gitee gitee.com/xuxueli0323…
3、通过docker安装
前文已经介绍过通过docker安装xxl-job教程,请参考docker安装XXL-JOB
4、整合
pom依赖
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-job-core</artifactId>
<version>2.4.0</version>
</dependency>
yml配置文件
spring:
application:
name: springboot-demo
#端口
server:
port: 8080
#xxl-job
xxl:
job:
# 执行器通讯TOKEN [选填]:非空时启用 系统默认 default_token
accessToken: default_token
admin:
# 调度中心部署跟地址 [选填]:如调度中心集群部署存在多个地址则用逗号分隔。
addresses: http://81.68.97.33:8090/xxl-job-admin
executor:
# 执行器注册 [选填]:优先使用该配置作为注册地址
address:
# 执行器的应用名称
appname: demo
# 执行器IP [选填]:默认为空表示自动获取IP
ip:
# 执行器运行日志文件存储磁盘路径 [选填] :需要对该路径拥有读写权限;为空则使用默认路径;
logpath: /data/applogs/xxl-job/test
# 执行器日志文件保存天数 [选填] : 过期日志自动清理, 限制值大于等于3时生效; 否则, 如-1, 关闭自动清理功能;
logretentiondays: 30
# 执行器端口号 [选填]:小于等于0则自动获取;默认端口为9999
port: 9999
创建xxl-job配置类
package com.example.springbootdemo.config;
import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
import com.xxl.job.core.util.IpUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* <p>
* xxl-job配置类
* </p>
*
* @author yurenwei
* @since 2023/9/22
*/
@Slf4j
@Configuration
public class XxlJobConfig {
@Value("${xxl.job.admin.addresses}")
private String adminAddresses;
@Value("${xxl.job.accessToken}")
private String accessToken;
@Value("${xxl.job.executor.appname}")
private String appname;
@Value("${xxl.job.executor.address}")
private String address;
@Value("${xxl.job.executor.ip}")
private String ip;
@Value("${xxl.job.executor.port}")
private int port;
@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.setAddress(address);
xxlJobSpringExecutor.setIp(IpUtil.getIp());
xxlJobSpringExecutor.setPort(port);
xxlJobSpringExecutor.setAccessToken(accessToken);
xxlJobSpringExecutor.setLogPath(logPath);
xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);
return xxlJobSpringExecutor;
}
}
创建执行器的任务类
package com.example.springbootdemo.task;
import com.xxl.job.core.handler.annotation.XxlJob;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
/**
* <p>
* demo任务
* </p>
*
* @author yurenwei
* @since 2023/9/22
*/
@Slf4j
@Component
public class DemoTask {
@XxlJob("demoJobHandler")
public void demoJobHandler(){
log.info("----------xxl-job test---------------");
}
}
登录xxl-job-admin客户端,在执行器管理新增执行器
新增
执行器列表多一条数据,执行器demo已被添加
此时并没有机器注册
将本地项目打包上传到linux服务器
java -jar springboot-demo-0.0.1-SNAPSHOT.jar
启动项目
项目成功启动
查看本地机器是否注册到xxl-job-admin上
注册成功
新增任务
在xxl-job-admin的任务管理中,新增一条任务
我配置的每隔3秒执行一次
启动任务
查看日志
发现定时任务已被成功执行,每隔3秒执行一次
停止任务
查看项目日志发现任务不在执行
调度日志
这里面可以查看每个任务的执行情况
至此,SpringBoot整合XXL-JOB结束了,其他更多的用法可以参考官网。