SpringBoot整合XXL-JOB

本文介绍XXL-JOB分布式任务调度平台的特性与应用场景,并详细指导如何从零开始搭建一个完整的任务调度系统,包括创建项目、配置数据库、启动调度器与执行器等关键步骤。

1 XXL-JOB说明

  XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。

  项目中可能或多或少的会使用到定时调度,如果定时调度任务很多,这时候呢,就可以考虑使用xxl-job 其提供了强大的web管理界面 以及分布式调度特性!

  官网文档地址:分布式任务调度平台XXL-JOB

  GitHub地址:代码

  Gitee地址:代码

1.1 XXL-JOB特性

  • 1、简单:支持通过Web页面对任务进行CRUD操作,操作简单,一分钟上手;
  • 2、动态:支持动态修改任务状态、启动/停止任务,以及终止运行中任务,即时生效;
  • 3、调度中心HA(中心式):调度采用中心式设计,“调度中心”自研调度组件并支持集群部署,可保证调度中心HA;
  • 4、执行器HA(分布式):任务分布式执行,任务”执行器”支持集群部署,可保证任务执行HA;
  • 5、注册中心: 执行器会周期性自动注册任务, 调度中心将会自动发现注册的任务并触发执行。同时,也支持手动录入执行器地址;
  • 等等。。。。

1.2 XXL-JOB项目启动展示(登录账号密码:admin 123456)

2 创建Maven项目

按下图步骤,创建一个maven项目。我是创建了一个父子工程,创建了普通的maven项目,在项目下创建不同的springboot项目,也可以直接创建spring boot项目。

2.1 创建项目

2.2 选择amven项目

2.3 创建xxl-job-admin模块为调度中心的spring boot项目

2.4 把下载的代码xxl-job-admin复制过来,目录结构如下

2.5 创建xxl-job-core核心maven项目

2.6 把下载的代码xxl-job-core复制过来,目录结构如下

2.7 创建xxl-job-executor模块为执行的spring boot项目

2.8 把下载的代码xxl-job-executor-springboot复制过来,目录结构如下

2.9 建议直接下载官网代码或者我的代码,省去搭建环境的麻烦,官网代码目录如下

xxl-job-admin:调度中心

xxl-job-core:公共依赖

xxl-job-executor:执行器Sample示例(选择合适的版本执行器,可直接使用,也可以参考其并将现有项目改造成执行器)
   :xxl-job-excutor-sample-framel
<think>我们正在回答用户关于Spring Boot整合XXL-Job的问题。根据引用内容,我们可以整理出整合步骤。 注意:引用[1]到[5]提供了不同的信息片段,我们需要整合这些信息,给出清晰的步骤。 步骤概述: 1. 部署XXL-Job调度中心(Admin) 2. 在Spring Boot项目中引入依赖并配置执行器 3. 在调度中心管理页面配置执行器和任务 详细步骤: 一、部署XXL-Job调度中心 引用[2]、[3]、[4]和[5]都提到了调度中心的部署。 1. 初始化数据库:创建MySQL数据库(如xxl_job),并执行官方提供的SQL脚本(位于`doc/db/tables_xxl_job.sql`)。 2. 配置调度中心:修改`xxl-job-admin`模块中的`application.properties`文件,设置数据库连接信息(URL、用户名、密码)和端口(默认为8080)。 3. 启动调度中心:运行`xxl-job-admin`项目(通常是一个Spring Boot应用),确保启动成功。 二、在Spring Boot项目中配置执行器 引用[1]、[3]、[4]、[5]提供了相关信息。 1. 引入依赖:在Spring Boot项目的`pom.xml`中添加`xxl-job-core`依赖。 根据引用[4],如果使用Spring Boot,可以选择`xxl-job-executor-sample-springboot`作为参考,但实际只需引入核心依赖。 示例依赖(注意版本要与调度中心匹配): ```xml <dependency> <groupId>com.xuxueli</groupId> <artifactId>xxl-job-core</artifactId> <version>${xxl-job.version}</version> </dependency> ``` 2. 配置文件:在`application.properties`(或`application.yml`)中配置执行器相关信息。 配置项通常包括: - 调度中心地址(admin.addresses) - 执行器名称(xxl.job.executor.appname) - 执行器端口(xxl.job.executor.port,执行器内嵌服务端口,供调度中心回调使用) - 执行器日志路径(xxl.job.executor.logpath) - 执行器日志保留天数(xxl.job.executor.logretentiondays) 示例配置(引用[5]和[4]): ``` # 调度中心地址 xxl.job.admin.addresses=http://127.0.0.1:8080/xxl-job-admin # 执行器名称 xxl.job.executor.appname=xxl-job-executor-sample # 执行器端口,默认为9999(避免与已用端口冲突) xxl.job.executor.port=9999 # 执行器日志路径 xxl.job.executor.logpath=/data/applogs/xxl-job/jobhandler # 执行器日志保留天数,默认30天 xxl.job.executor.logretentiondays=30 ``` 3. 配置执行器组件:在Spring Boot项目中创建配置类,配置XxlJobSpringExecutor(引用[5]和[4])。 示例配置类: ```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; @Bean public XxlJobSpringExecutor xxlJobExecutor() { logger.info(">>>>>>>>>>> xxl-job config init."); XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor(); xxlJobSpringExecutor.setAdminAddresses(adminAddresses); xxlJobSpringExecutor.setAppname(appname); xxlJobSpringExecutor.setPort(port); // 设置日志路径(如果配置中有) // xxlJobSpringExecutor.setLogPath(logPath); // 设置日志保留天数(如果配置中有) // xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays); return xxlJobSpringExecutor; } } ``` 三、在调度中心管理页面配置执行器和任务 1. 访问调度中心:启动调度中心后,访问`http://localhost:8080/xxl-job-admin`(默认账号/密码:admin/123456)。 2. 创建执行器(引用[1]和[5]): - 进入“执行器管理”页面,点击“新增” - 填写执行器信息:AppName(与配置文件中`xxl.job.executor.appname`一致)、名称、注册方式(推荐自动注册) - 保存后,执行器会自动注册(需要确保执行器项目已启动,且配置的端口可用) 3. 创建任务(引用[1]和[5]): - 进入“任务管理”页面,点击“新增” - 选择执行器(上一步创建的执行器) - 填写任务信息:任务描述、Cron表达式、JobHandler(与代码中@XxlJob注解的值一致) - 其他配置按需填写,保存后启动任务。 四、开发任务 在Spring Boot项目中,编写任务方法,使用`@XxlJob`注解。 示例(引用[5]): ```java import com.xxl.job.core.handler.annotation.XxlJob; import org.springframework.stereotype.Component; @Component public class SampleJob { @XxlJob("demoJobHandler") public void demoJobHandler() throws Exception { // 执行任务逻辑 System.out.println("XXL-Job, Hello World."); } } ``` 注意:在调度中心创建任务时,JobHandler一栏填写"demoJobHandler"。 总结: 以上步骤完成了Spring Boot与XXL-Job整合。首先部署调度中心,然后在业务项目中引入依赖并配置执行器,最后在调度中心管理页面配置执行器和任务。 注意事项: - 确保调度中心和执行器网络互通,特别是执行器端口(如9999)需要能被调度中心访问。 - 如果执行器使用自动注册,启动后会在调度中心执行器列表中显示在线地址。 根据要求,我们生成相关问题: 相关问题: 1. XXL-Job调度中心启动失败的可能原因有哪些? 2. 如何配置XXL-Job的执行器集群? 3. XXL-Job的任务日志如何查看和管理? 4. 如何在Spring Boot中动态添加XXL-Job任务? 5. XXL-Job有哪些任务路由策略? 注意:引用标识要自然。我们在回答中引用了多个来源,在适当的地方添加引用标识。 </think> ### Spring Boot整合XXL-Job教程 以下是详细整合步骤,结合官方文档和最佳实践整理而成: --- #### 一、部署调度中心(XXL-Job-Admin) 1. **初始化数据库** - 创建MySQL数据库(如`xxl_job`) - 执行SQL脚本(路径:`xxl-job/doc/db/tables_xxl_job.sql`)[^2][^4][^5] 2. **配置调度中心** 修改`xxl-job-admin`项目的配置文件(`application.properties`): ```properties # 数据库配置 spring.datasource.url=jdbc:mysql://localhost:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8 spring.datasource.username=root spring.datasource.password=root # 端口配置(默认8080) server.port=8080 ``` 3. **启动调度中心** 运行`XxlJobAdminApplication`,访问 `http://localhost:8080/xxl-job-admin` (默认账号:`admin`,密码:`123456`)[^2][^5] --- #### 二、Spring Boot项目整合执行器 1. **添加依赖**(`pom.xml`) ```xml <dependency> <groupId>com.xuxueli</groupId> <artifactId>xxl-job-core</artifactId> <version>2.4.0</version> <!-- 版本需匹配调度中心 --> </dependency> ``` 2. **配置文件**(`application.yml`) ```yaml xxl: job: admin: addresses: http://localhost:8080/xxl-job-admin # 调度中心地址 executor: appname: xxl-job-demo # 执行器名称(需与调度中心一致) port: 9999 # 执行器端口(需未被占用) logpath: /data/applogs/xxl-job/jobhandler logretentiondays: 30 ``` 3. **配置执行器Bean**(Java配置类) ```java @Configuration public class XxlJobConfig { @Value("${xxl.job.admin.addresses}") private String adminAddresses; @Bean public XxlJobSpringExecutor xxlJobExecutor() { XxlJobSpringExecutor executor = new XxlJobSpringExecutor(); executor.setAdminAddresses(adminAddresses); executor.setAppname("xxl-job-demo"); executor.setPort(9999); return executor; } } ``` --- #### 三、开发定时任务 1. **编写任务处理器** ```java @Component public class DemoJobHandler { // 使用@XxlJob注解声明任务 @XxlJob("demoJobHandler") public void execute() { System.out.println("XXL-JOB任务执行成功!"); } } ``` 2. **在调度中心配置任务** - 登录调度中心 → **执行器管理** → 添加执行器(AppName需与配置文件一致) - **任务管理** → 新建任务: - JobHandler:填写`demoJobHandler`(与注解名称一致) - Cron表达式:如 `0/30 * * * * ?`(每30秒执行) - 路由策略:选择`轮询`或`广播`等[^3] --- #### 四、验证执行 1. 启动Spring Boot项目 2. 在调度中心查看执行器状态(应显示为**在线**) 3. 手动触发任务或等待定时调度,观察日志输出 --- ### 注意事项 1. **端口冲突**:执行器端口(如9999)需开放且未被占用 2. **网络互通**:确保调度中心能访问执行器地址 3. **版本一致**:调度中心与执行器依赖版本需匹配 4. **任务注解**:`@XxlJob`的值需与调度中心JobHandler完全一致 > 参考官方文档:[XXL-Job GitHub](https://github.com/xuxueli/xxl-job) ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值