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);
        // 业务逻辑
    }
}
相关推荐
weixin_4365250724 分钟前
Gitee - IDEA 主支 master 和分支 dev 的使用
java·ide·intellij-idea
sheji34161 小时前
【开题答辩全过程】以 YF精品视频动漫平台为例,包含答辩的问题和答案
java·eclipse
小蕾Java1 小时前
Java 开发工具,最新2025 IDEA 使用
java·ide·intellij-idea
是席木木啊1 小时前
Idea升级到2024版本:“marketplace plugins are not loaded”解决方案
java·ide·intellij-idea
胚芽鞘6811 小时前
博客标题:解密 IntelliJ IDEA 调试:当你的 List 不仅仅是 List
java·ide·intellij-idea
꒰ঌ 安卓开发໒꒱1 小时前
Java面试-并发面试(一)
java·jvm·面试
这里是杨杨吖1 小时前
SpringBoot+Vue医院预约挂号系统 附带详细运行指导视频
vue.js·spring boot·医院·预约挂号
HezhezhiyuLe1 小时前
IDEA中Add New Configuration找不到Tomcat
java·ide·intellij-idea
悦悦子a啊1 小时前
[Java]PTA: jmu-Java-02基本语法-08-ArrayList入门
java·开发语言·算法
235161 小时前
【MySQL】数据库事务深度解析:从四大特性到隔离级别的实现逻辑
java·数据库·后端·mysql·java-ee