xxl-job服务搭建,以及 springboot 集成xxl-job 项目完整步骤示例

XXL-JOB 服务搭建及 SpringBoot 集成完整指南

XXL-JOB 是一个轻量级的分布式任务调度平台,支持可视化的任务管理、执行和监控。以下是 从零开始搭建 XXL-JOB 服务在 SpringBoot 项目中集成 的详细步骤(基于最新稳定版 XXL-JOB 2.3.0)。


一、XXL-JOB 服务搭建

1. 环境准备

  • JDK: 1.8+
  • 数据库: MySQL 5.7+ (存储调度信息)
  • Maven: 3.x+
  • 端口: 确保 9999 端口未被占用(默认执行器端口)

2. 下载 XXL-JOB 源码

bash 复制代码
# 方式1:直接下载 Release 包
https://github.com/XXL-JOB/XXL-JOB/releases

# 方式2:Git clone (推荐)
git clone https://github.com/XXL-JOB/XXL-JOB.git
cd xxl-job

3. 初始化数据库

创建数据库和用户:
sql 复制代码
CREATE DATABASE xxl_job;
CREATE USER 'xxl_job'@'%' IDENTIFIED BY 'xxl_job_password';
GRANT ALL PRIVILEGES ON xxl_job.* TO 'xxl_job'@'%';
FLUSH PRIVILEGES;
导入 SQL 脚本:

进入项目目录 doc/db/,执行:

sql 复制代码
mysql -u root -p xxl_job < doc/db/tables_xxl_job_mysql.sql

4. 配置调度中心(admin)

修改配置文件:xxl-job-admin/src/main/resources/application.properties

properties 复制代码
# 数据源配置
spring.datasource.url=jdbc:mysql://localhost:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
spring.datasource.username=xxl_job
spring.datasource.password=xxl_job_password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

# 日志级别调整(可选)
logging.level.root=INFO

5. 启动调度中心

方式1:直接运行 Main Class
  • 主类位置:xxl-job-admin/src/main/java/com/xxl/job/admin/XxlJobAdminApplication.java
  • 右键运行该类的 main() 方法
方式2:打包后运行
bash 复制代码
cd xxl-job-admin
mvn clean package -DskipTests
java -jar target/xxl-job-admin-2.3.0.jar

访问地址:http://localhost:8080/xxl-job-admin

默认账号密码:admin / 123456


二、SpringBoot 集成 XXL-JOB

1. 创建 SpringBoot 项目

使用 start.spring.io 创建项目,添加依赖:

  • Web
  • MyBatis
  • MySQL Driver
  • XXL-JOB Starter(手动添加)

2. 添加 XXL-JOB 依赖

pom.xml 中添加:

xml 复制代码
<dependency>
    <groupId>com.xuxueli</groupId>
    <artifactId>xxl-job-core</artifactId>
    <version>2.3.0</version>
</dependency>

3. 配置 XXL-JOB 执行器

application.yml 中添加配置:

yaml 复制代码
xxl:
  job:
    admin:
      addresses: http://localhost:8080/xxl-job-admin # 调度中心地址
    executor:
      appname: demo-executor          # 执行器名称
      address: ""                     # 留空自动注册
      ip: ""                          # 自动获取本机IP
      port: 9999                      # 执行器端口
      logpath: /data/applogs/xxl-job   # 日志路径
      logretentiondays: 30            # 日志保留天数

4. 编写任务代码

创建任务类:
java 复制代码
import com.xxl.job.core.handler.annotation.XxlJob;
import org.springframework.stereotype.Component;

@Component
public class DemoJobHandler {

    @XxlJob("demoJobHandler") // 任务标识(需与调度中心创建时一致)
    public void execute() {
        System.out.println("XXL-JOB, Hello World.");
        // 业务逻辑...
    }
}

5. 启动执行器

在 SpringBoot 启动类添加注解:

java 复制代码
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@SpringBootApplication
@EnableDiscoveryClient // 如果需要服务发现(如 Nacos)
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

三、调度中心任务配置

  1. 登录调度中心:http://localhost:8080/xxl-job-admin
  2. 新增执行器:
    • 执行器名称:demo-executor
    • 注册方式:自动注册(若失败可手动指定 IP:PORT)
  3. 新增任务:
    • 任务描述:示例任务
    • JobHandler:demoJobHandler
    • 调度类型:CRON 表达式(例如 0 * * * * ? 每分钟执行一次)
    • 保存并启动

四、验证与调试

  1. 查看执行器日志:
    • 控制台输出:XXL-JOB, Hello World.
    • 日志文件:/data/applogs/xxl-job/jobhandler/demoJobHandler.log
  2. 调度中心监控:
    • 任务执行记录
    • 下次执行时间
    • 执行状态(成功/失败)

常见问题解决

  1. 连接调度中心失败

    • 检查 admin addresses 配置是否正确
    • 确保防火墙开放 8080 端口
  2. 执行器注册失败

    • 确认执行器端口未被占用
    • 手动指定 IP 地址(避免自动获取失败)
  3. 任务不执行

    • 检查 CRON 表达式是否正确
    • 查看调度中心是否有异常日志

扩展功能

  • 分片广播 :通过 ShardingUtil 实现任务分片
  • 动态参数 :在 @XxlJob 注解中传递参数
  • GLUE模式:在线编辑任务代码(无需重启服务)

通过以上步骤,您可以快速搭建 XXL-JOB 分布式任务调度系统,并在 SpringBoot 项目中无缝集成。

相关推荐
lhrimperial3 小时前
企业级消息中心架构设计与实践:多渠道统一推送平台
spring cloud·中间件·系统架构
慧一居士7 小时前
IntelliJ IDEA中的项目jdk版本、语言级别版本与目标字节码版本配置说明与步骤示例
中间件
CRUD酱7 小时前
微服务分模块后怎么跨模块访问资源
java·分布式·微服务·中间件·java-ee
回家路上绕了弯7 小时前
定时任务实战指南:从单机到分布式,覆盖Spring Scheduler/Quartz/XXL-Jo
分布式·后端
laplace01238 小时前
Part3 RAG文档切分
笔记·python·中间件·langchain·rag
rchmin9 小时前
开源分布式ID生成方案接入介绍
分布式·开源
西***63479 小时前
赋能指挥中枢:分布式KVM坐席协作系统技术与应用
分布式
Tony Bai9 小时前
【分布式系统】01 为何分布式?—— Vibe Coding 时代的系统设计哲学与我们的远征地图
分布式
云技纵横11 小时前
订票系统高并发实战:基于 ZooKeeper 的分布式锁、选座与幂等回滚(Java/Curator)
分布式·zookeeper·java-zookeeper
disgare11 小时前
关于分布式系统 RPC 中高可用功能的实现
java·分布式