简介

XXL-Job 是一个分布式任务调度平台,它提供了任务管理、任务调度、任务执行等功能。通过 XXL-Job,你可以方便地管理和调度你的任务。

本文档将介绍如何安装 XXL-Job,进行基本的配置,以及如何在 Spring Boot 中集成 XXL-Job,并提供示例代码。

安装

XXL-Job 的安装非常简单,你可以按照以下步骤进行安装:

  1. 下载 XXL-Job 执行器 JAR 包。

  2. 部署执行器 JAR 包到你的项目中,并添加依赖。

    • 将执行器 JAR 包添加到你的项目中的 libslib 目录下。

  3. 配置执行器相关信息,如注册中心地址、执行器名称等。

    • 打开执行器 JAR 包中的配置文件 application.propertiesapplication.yml

    • 配置注册中心地址:修改 xxl.job.admin.addresses 属性,指定调度中心的地址。例如:xxl.job.admin.addresses=http://localhost:8080/xxl-job-admin

    • 配置执行器名称:修改 xxl.job.executor.appname 属性,指定执行器的名称。例如:xxl.job.executor.appname=my-job-executor

详细的安装步骤和配置说明可以参考 XXL-Job 官方文档。

配置

配置是使用 XXL-Job 的重要一步,你需要配置执行器和调度中心的相关信息。

执行器的配置包括执行器名称、注册中心地址、执行器端口等。调度中心的配置包括调度中心地址、调度中心端口等。

你可以通过修改执行器的配置文件 application.propertiesapplication.yml 来进行配置。

以下是一些常用的配置属性:

  • xxl.job.admin.addresses:调度中心的地址,例如 http://localhost:8080/xxl-job-admin

  • xxl.job.executor.appname:执行器的名称,例如 my-job-executor

  • xxl.job.executor.ip:执行器的 IP 地址,可以自动获取,一般无需配置。

  • xxl.job.executor.port:执行器的端口,默认为 9999。

  • xxl.job.accessToken:执行器和调度中心通信的访问令牌,可以设置一个安全的字符串。

  • 其他属性可以参考 XXL-Job 官方文档。

集成 Spring Boot

XXL-Job 提供了与 Spring Boot 集成的支持,以便更方便地使用 XXL-Job。

  1. 首先,在 Maven 或 Gradle 构建文件中添加 XXL-Job 的依赖项。

    • Maven 依赖:

    <dependency>
        <groupId>com.xuxueli</groupId>
        <artifactId>xxl-job-core</artifactId>
        <version>2.3.0</version>
    </dependency>
    • Gradle 依赖:

    implementation 'com.xuxueli:xxl-job-core:2.3.0'
  2. 创建一个配置类,配置 XXL-Job 的相关信息,如调度中心地址、执行器配置等。

    import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    ​
    @Configuration
    public class XxlJobConfig {
    ​
        @Value("${xxl.job.admin.addresses}")
        private String adminAddresses;
    ​
        @Value("${xxl.job.executor.appname}")
        private String appName;
    ​
        @Value("${xxl.job.executor.ip}")
        private String ip;
    ​
        @Value("${xxl.job.executor.port}")
        private int port;
    ​
        @Value("${xxl.job.accessToken}")
        private String accessToken;
    ​
        @Bean(initMethod = "start", destroyMethod = "destroy")
        public XxlJobSpringExecutor xxlJobExecutor() {
            XxlJobSpringExecutor xxlJobExecutor = new XxlJobSpringExecutor();
            xxlJobExecutor.setAdminAddresses(adminAddresses);
            xxlJobExecutor.setAppName(appName);
            xxlJobExecutor.setIp(ip);
            xxlJobExecutor.setPort(port);
            xxlJobExecutor.setAccessToken(accessToken);
            return xxlJobExecutor;
        }
    }

    在上述代码中,我们使用了 XxlJobSpringExecutor 类来集成 XXL-Job 和 Spring Boot。

  3. 在配置类中,使用 @EnableXxlJob 注解启用 XXL-Job。

    import com.xxl.job.core.executor.XxlJobExecutor;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.context.annotation.Configuration;
    ​
    @Configuration
    @EnableXxlJob
    public class XxlJobConfig {
    ​
        @Autowired
        private XxlJobExecutor xxlJobExecutor;
    ​
    }

    使用 @EnableXxlJob 注解来启用 XXL-Job,并将 XxlJobExecutor 自动注入到配置类中。

  4. 在需要调度的任务方法上,使用 @XxlJob 注解标记任务。

    import com.xxl.job.core.biz.model.ReturnT;
    import com.xxl.job.core.handler.annotation.XxlJob;
    import org.springframework.stereotype.Component;
    ​
    @Component
    public class MyJobHandler {
    ​
        @XxlJob("myJobHandler")
        public ReturnT<String> myJobHandler(String param) throws Exception {
            // 任务逻辑代码
            // ...
            return ReturnT.SUCCESS;
        }
    }

    在上述示例中,我们定义了一个名为 myJobHandler 的任务方法,并使用 @XxlJob 注解进行标记。方法的参数可以根据实际需求进行定义和传递。