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);
        // 业务逻辑
    }
}
相关推荐
糖拌西瓜皮36 分钟前
Java开发者视角:深入理解Node.js异步编程模型
java·后端·node.js
plainGeekDev37 分钟前
getter/setter → Kotlin 属性
android·java·kotlin
一线大码1 小时前
Smart-Doc 的简单使用
java·后端·restful
MacroZheng2 小时前
Claude Code官方桌面端正式发布,夯爆了!
java·人工智能·后端
虚无境2 小时前
如何编写一个SpringBoot项目告警推送的Starter
java·prometheus·webhook
NE_STOP17 小时前
Vide Coding--AI编程工具的选择
java
码云数智-园园18 小时前
C++20 Modules 模块详解
java·开发语言·spring
程序员黑豆18 小时前
JDK 下载安装与配置详细教程
java·前端·ai编程