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);
        // 业务逻辑
    }
}
相关推荐
小羊没烦恼!3 天前
微服务化的基石——持续集成
java·大数据·word·powerpoint·.net
俊昭喜喜里3 天前
java中的继承和多态的区别
java
小羊没烦恼!3 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
譕痕3 天前
JSONObject与JSONArray封装数据格式区别
java·json
胡写代码3 天前
别再前后端各写一套表单校验了
java·后端
小鱼能吃糖3 天前
缺陷修复总览 · mall电商项目:5类缺陷,1个病根,4个业务域
java·电商
此时不提桶,更待何时3 天前
01-06-A-JVM排查实战详解
java·jvm
vipxieliang3 天前
ValidX 在 DDD 领域驱动设计中的实践
java·spring boot
ba_pi3 天前
mysql 查询所有表名并授权
java
ProcessOn官方账号3 天前
java函数式编程--入门基础
java·编程·函数式编程