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

相关推荐
小北方城市网19 小时前
Redis 分布式锁高可用实现:从原理到生产级落地
java·前端·javascript·spring boot·redis·分布式·wpf
小尘要自信1 天前
高级网络爬虫实战:动态渲染、反爬对抗与分布式架构
分布式·爬虫·架构
小程故事多_801 天前
深度解析Kafka重平衡,触发机制、执行流程与副本的核心关联
分布式·kafka
2501_948120151 天前
基于HBase的分布式列式存储
数据库·分布式·hbase
小北方城市网1 天前
MyBatis-Plus 生产级深度优化:从性能到安全的全维度方案
开发语言·redis·分布式·python·缓存·性能优化·mybatis
【赫兹威客】浩哥1 天前
【赫兹威客】伪分布式Kafka测试教程
分布式·kafka
【赫兹威客】浩哥1 天前
【赫兹威客】伪分布式Spark测试教程
大数据·分布式·spark
what丶k1 天前
MySQL读写分离部署配置全解析(从原理到落地)
数据库·分布式·mysql
rustfs1 天前
RustFS 配置 Cloudflare Tunnel 实现安全访问的详细教程!
分布式·安全·docker·rust·开源
SJLoveIT1 天前
CAP理论,顺便讲下BASE
分布式