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这个请求将执行结果返回给调度中心,调度中心根据返回的结果更新任务状态。

浙公网安备 33010602011771号