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 项目中无缝集成。

相关推荐
程序猿阿伟7 小时前
《分布式追踪Span-业务标识融合:端到端业务可观测手册》
分布式
爆米花byh7 小时前
在RockyLinux9环境的Kafka4.1.1单机版安装(无ZK依赖)
中间件·kafka
爆米花byh8 小时前
在RockyLinux9环境的Storm2.8.3单机版安装
linux·中间件·storm
PD我是你的真爱粉8 小时前
FastAPI中间件与路由
中间件·fastapi
消失的旧时光-19439 小时前
第十六课实战:分布式锁与限流设计 —— 从原理到可跑 Demo
redis·分布式·缓存
若水不如远方9 小时前
分布式一致性(三):共识的黎明——Quorum 机制与 Basic Paxos
分布式·后端·算法
会算数的⑨10 小时前
Kafka知识点问题驱动式的回顾与复习——(一)
分布式·后端·中间件·kafka
张小凡vip10 小时前
Kafka--使用 Kafka Connect 导入/导出数据
分布式·kafka
回忆是昨天里的海10 小时前
kafka概述
分布式·kafka
知识即是力量ol10 小时前
初识 Kafka(一):分布式流平台的定义、核心优势与架构全景
java·分布式·kafka·消息队列