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);
        // 业务逻辑
    }
}
相关推荐
Anastasiozzzz2 小时前
Java Lambda 揭秘:从匿名内部类到底层原理的深度解析
java·开发语言
骇客野人2 小时前
通过脚本推送Docker镜像
java·docker·容器
韩立学长2 小时前
基于Springboot泉州旅游攻略平台d5h5zz02(程序、源码、数据库、调试部署方案及开发环境)系统界面展示及获取方式置于文档末尾,可供参考。
数据库·spring boot·旅游
铁蛋AI编程实战2 小时前
通义千问 3.5 Turbo GGUF 量化版本地部署教程:4G 显存即可运行,数据永不泄露
java·人工智能·python
晚霞的不甘2 小时前
CANN 编译器深度解析:UB、L1 与 Global Memory 的协同调度机制
java·后端·spring·架构·音视频
SunnyDays10112 小时前
使用 Java 冻结 Excel 行和列:完整指南
java·冻结excel行和列
摇滚侠3 小时前
在 SpringBoot 项目中,开发工具使用 IDEA,.idea 目录下的文件需要提交吗
java·spring boot·intellij-idea
云姜.3 小时前
java多态
java·开发语言·c++
李堇3 小时前
android滚动列表VerticalRollingTextView
android·java
泉-java3 小时前
第56条:为所有导出的API元素编写文档注释 《Effective Java》
java·开发语言