xxl-job使用流程

XXL-JOB 是一个轻量级的分布式任务调度框架,常用于任务调度、执行等。以下是使用 XXL-JOB 创建和配置任务执行器的基本流程:

1. 引入依赖

首先,添加 XXL-JOB 的 Maven 依赖到项目的 pom.xml 中:

<dependency>
    <groupId>com.xxl.job</groupId>
    <artifactId>xxl-job-core</artifactId>
    <version>2.3.0</version> <!-- 使用适合的版本 -->
</dependency>
2. 创建 XxlJobSpringExecutor 对象

创建一个 XxlJobSpringExecutor 对象,并进行配置。它是 XXL-JOB 执行器的核心对象,负责将任务调度的相关功能与 Spring 容器集成。

步骤

  • 在 Spring Boot 的 @Configuration 类中配置 XxlJobSpringExecutor
import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class XxlJobConfig {

    @Bean
    public XxlJobSpringExecutor xxlJobExecutor() {
        XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
        xxlJobSpringExecutor.setAdminAddresses("http://admin-address:8080");  // XXL-JOB Admin 的地址
        xxlJobSpringExecutor.setAppName("your-app-name");  // 执行器的应用名称
        xxlJobSpringExecutor.setIp("127.0.0.1");  // 执行器的 IP 地址
        xxlJobSpringExecutor.setPort(9999);  // 执行器的端口
        xxlJobSpringExecutor.setAccessToken("xxl-job-access-token");  // 如果有访问令牌
        return xxlJobSpringExecutor;
    }
}

这段代码配置了 XxlJobSpringExecutor,其中:

  • adminAddresses:指向 XXL-JOB Admin 的管理地址,通常是部署在独立服务器上的 Admin 后台。
  • appName:设置当前执行器的名称,通常是应用的名称。
  • ip:指定执行器的 IP 地址,可以是本机地址或者公网 IP。
  • port:指定执行器监听的端口号。
  • accessToken:可选的访问令牌,防止未授权访问。
3. 编写任务执行方法

在你的 Spring Bean 中创建一个方法,并用 @XxlJob 注解标记它为任务方法。任务方法需要是 public 的,并且返回类型为 void,方法签名可以接受一个 JobParam 类型的参数。

import com.xxl.job.core.handler.annotation.XxlJob;
import org.springframework.stereotype.Component;

@Component
public class MyJobHandler {

    @XxlJob("demoJobHandler")  // 这里的参数是任务的名称,确保唯一
    public void demoJobHandler() {
        System.out.println("执行任务...");
        // 执行任务逻辑
    }
}

@XxlJob 注解中,demoJobHandler 是任务的唯一标识符,它会在调度中心执行该任务时被引用。

4. 配置 XXL-JOB Admin
  • 部署 XXL-JOB Admin 作为任务调度管理平台,可以用来管理和监控任务的执行。
  • 在 XXL-JOB Admin 中,你需要配置任务执行器(注册到调度中心),并添加任务。
5. 启动执行器
  • 启动 Spring Boot 应用,XxlJobSpringExecutor 会自动启动,并在后台与 XXL-JOB Admin 进行连接。
  • 在 Admin 中创建任务时,任务会指向执行器(根据执行器的应用名、IP 和端口进行调度)。
6. 调度任务
  • 在 XXL-JOB Admin 中创建一个任务,配置其执行器地址、执行间隔等信息。
  • 当任务被调度时,XXL-JOB Admin 会触发与指定执行器相关联的任务执行方法
项目中xxl-job的注意事项

项目依赖framework模块,所以自动注册XxlJobSpringExecutor执行器

执行器把自己注册到nacos中,调度中心从nacos中找对应的ip地址,加上配置文件中执行器的端口号,直接找到对应的执行器

执行器与调度中心之间的实际通信
  • 执行器启动:当执行器启动时,它会在 9999 端口启动一个 HTTP 服务,等待来自调度中心的任务请求。

  • 调度任务:调度中心会通过指定的端口(如 9999)向执行器发送任务调度请求。调度中心会向执行器发送一个 HTTP 请求,例如:

    POST http://my-executor:9999/xxl-job/executor/run
    

    其中,my-executor 是执行器的名称,9999 是执行器暴露的端口。这个请求包含了任务的调度信息,例如任务ID、任务参数等。

  • 任务执行:执行器接收到任务请求后,会启动对应的任务,并执行它。执行器完成任务后,它会将执行结果(成功或失败)通过 HTTP 请求返回给调度中心。例如:

    POST http://xxl-job-admin:8088/xxl-job-admin/api/job/complete
    

    这个请求将执行结果返回给调度中心,调度中心根据返回的结果更新任务状态。

posted @ 2025-03-29 20:45  大花生加瓦  阅读(188)  评论(0)    收藏  举报