springboot集成xxl-job

一、引入执行器运行环境依赖

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);
        // 业务逻辑
    }
}
相关推荐
sql2008help2 小时前
使用spring-boot-starter-validation实现入参校验
java·开发语言
Babybreath-3 小时前
Tomcat
java·tomcat
摇滚侠3 小时前
面试实战 问题二十三 如何判断索引是否生效,什么样的sql会导致索引失效
java
悟纤3 小时前
当生产环境卡成 PPT:Spring Boot 线程 Dump 捉妖指南 - 第544篇
java·spring boot·后端
江影影影5 小时前
Spring Boot 2.6.0+ 循环依赖问题及解决方案
java·spring boot·后端
null不是我干的6 小时前
黑马SpringBoot+Elasticsearch作业2实战:商品搜索与竞价排名功能实现
spring boot·后端·elasticsearch
Jonathan丶BNTang6 小时前
IntelliJ IDEA 2025.2 重磅发布
java·ide·intellij-idea
weixin_422289376 小时前
springboot整合rabbitMQ的示例
spring boot·rabbitmq·java-rabbitmq
tanxiaomi7 小时前
学习分库分表的前置知识:高可用系统架构理论与实践
java·mysql·spring cloud·系统架构·springboot