xxl-job的安装集成
XXL-JOB是一个分布式任务调度平台。
使用时,分为调度中心(单独一个web项目)和执行器(任意Spring boot的Java服务)。
调度中心有web界面,用来定义任务,查看日志。
 
调度中心的部署:
1. 下载xxl-job源码
https://github.com/xuxueli/xxl-job/tags
选择合适的稳定版本(如 2.4.2)
2. 解压并启动
2.1 解压下载的源码
2.2 在数据库中新建名为xxl_job数据库,然后在该数据库中执行~\doc\dbtables_xxl_job.sql文件,用于初始化数据
2.3 用idea打开该项目,然后根据需要修改~\xxl-job-admin\src\main\resources\application.properties配置文件(基本只用改数据库的密码就行)
2.4 启动 XxlJobAdminApplication 项目,然后访问 http://192.168.0.104:8080/xxl-job-admin/toLogin (默认密码:admin/123456)
2.5 配置你的执行器,然后根据需要配置任务即可
任务配置界面如下(一般如图中配置就行):
 
 
执行器的集成:
1. 在项目中添加依赖(注意依赖的版本需要和调度中心的版本一致)
<dependency>
  <groupId>com.xuxueli</groupId>
  <artifactId>xxl-job-core</artifactId>
  <version>2.4.2</version><!-- 这个版本,要和调度中心版本一致 -->
</dependency>
 
2. 在项目中新建配置类
2.1 新建XxlJobConfig
 
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
 
 
@Configuration
@Slf4j
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(ip);
        xxlJobSpringExecutor.setPort(port);
        xxlJobSpringExecutor.setAccessToken(accessToken);
        xxlJobSpringExecutor.setLogPath(logpath);
        xxlJobSpringExecutor.setLogRetentionDays(logretentiondays);
 
        return xxlJobSpringExecutor;
    }
 
}
2.2 在配置文件中添加相应配置信息
 
# Spring boot的web服务的端口
server.port=8081
# 调度中心的地址
xxl.job.admin.addresses=http://192.168.0.104:8080/xxl-job-admin
# 执行器自己的名字
xxl.job.executor.appname=my-executor-test
# 日志路径(执行器中,XxlJobHelper.log()打印的日志存放地址)
xxl.job.executor.logpath=D:/lll/xxljob
# 日志保留天数
xxl.job.executor.logretentiondays=30
# 通讯token(调度中心~\xxl-job-admin\src\main\resources\application.properties配置文件中xxl.job.accessToken参数的值)
xxl.job.accessToken=default_token
# 回调地址,相当于告诉调度中心,自己的地址(这个和 xxl.job.executor.port + xxl.job.executor.ip 是替换关系)
#xxl.job.executor.address=http://192.168.0.104:9999
# 执行器端口(非项目端口)
xxl.job.executor.port=9999
# 执行器ip
xxl.job.executor.ip=192.168.0.104
 
3. 定义BEAN类型的定时任务(xxl-jobd的任务类型分为BEAN和GLUE,如果是GLUE类型,执行器则无需额外代码,BEAN类型则需要提前定义一个对应的方法)
@XxlJob("demoJobHandler")  // 这个值必须与任务管理中的 JobHandler 一致
public void demoJobHandler() throws Exception {
    XxlJobHelper.log("【DEBUG】demoJobHandler 方法已进入!");
    // 获取任务参数
    String jobParam = XxlJobHelper.getJobParam();
    JSONObject jsonObject = JSONObject.parseObject(jobParam);
    // 打印日志
    XxlJobHelper.log("接收到的任务参数1: {}", jobParam);
    log.info("接收到的任务参数2: {}", jobParam);
    log.info("接收到的任务参数3: {}", jsonObject.toJSONString());
    Thread.sleep(3 * 1000);// 模拟耗时
    log.info("======end=====");
}
点击数:25
创建时间:2025-12-22 16:20:18
更新时间:2025-12-24 17:07:56