XXL-JOB快速入门
🌟 什么是 XXL-JOB?
XXL-JOB 是一个轻量级、开源的分布式任务调度平台,由大众点评工程师许雪里(作者名字缩写为 xxl
)开发并开源。
它的目标是:让定时任务的管理变得简单、可靠、可视化。
官网地址:https://www.xuxueli.com/xxl-job/
🔑 核心概念(5大核心角色)
1. 调度中心(Admin)
- 角色:任务的“指挥官”。
- 功能:
- 提供 Web 管理界面,用于创建、修改、删除、触发定时任务;
- 管理所有注册进来的“执行器”;
- 按照 cron 表达式调度任务,决定“什么时候、调用哪个执行器的哪个方法”;
- 记录调度日志、查看执行结果。
- 部署方式:通常独立部署为一个 Web 应用(如
xxl-job-admin
),通过浏览器访问。
2. 执行器(Executor)
- 角色:任务的“执行者”。
- 说明:
- 实际运行定时任务的 Java 应用程序(比如你的 Spring Boot 服务);
- 启动后会主动向“调度中心”注册自己(心跳机制);
- 接收调度中心发来的任务执行请求,并运行具体的方法。
- 关键配置:
appname
:执行器的唯一标识;ip/port
:网络地址,供调度中心回调;logPath
:本地任务日志存储路径。
✅ 一个调度中心可以管理多个执行器,实现分布式调度。
3. 任务(Job / Task)
- 定义:你要执行的具体逻辑,比如“每天凌晨清理日志”、“每小时同步数据”等。
- 在 XXL-JOB 中称为 JobHandler。
- 实现方式:
- 在执行器项目中编写一个 Java 方法,并加上
@XxlJob("methodName")
注解; - 调度中心通过这个名字来调用它。
- 在执行器项目中编写一个 Java 方法,并加上
@XxlJob("myTask")
public void myTask() {System.out.println("执行了我的定时任务!");
}
4. 调度(Trigger)
- 含义:由调度中心发起的一次“调用指令”。
- 触发方式:
- Cron 表达式:最常用,比如
0 0 2 * * ?
表示每天凌晨2点执行; - 手动触发:在管理后台点击“执行”按钮;
- API 触发:通过 HTTP 接口远程调用;
- 父子任务、失败重试 等高级触发方式。
- Cron 表达式:最常用,比如
调度 ≠ 执行。调度是“发命令”,执行是“干活”。
5. 调度日志 & 执行日志
- 调度日志:记录“调度中心是否成功发出了调度请求”;
- 执行日志:记录“执行器那边任务是否成功运行、输出了什么内容”;
- 日志支持查看、搜索、失败告警、清理保留等。
🧩 工作流程(一次任务是如何执行的?)
- 执行器启动 → 向调度中心注册自己(上报 IP、端口、appname);
- 你在调度中心后台 → 创建一个任务,选择目标执行器和 JobHandler 方法名;
- 到达 cron 时间点 → 调度中心根据任务配置,向对应的执行器发送 HTTP 请求;
- 执行器收到请求 → 执行标注了
@XxlJob
的方法; - 执行完成后 → 执行器将结果返回给调度中心,并写入本地日志;
- 你在后台 → 可以查看这次调度的状态(成功/失败)、日志输出、耗时等。
[调度中心 Admin]↓ (HTTP 调用)
[执行器 Executor] → 运行 @XxlJob 方法↓
[返回执行结果]
[调度中心记录日志]
✅ 为什么使用 XXL-JOB?(对比传统 Timer/Scheduled)
功能 | 传统 @Scheduled | XXL-JOB |
---|---|---|
可视化界面 | ❌ 无 | ✅ 有 |
分布式调度 | ❌ 难实现 | ✅ 支持 |
动态增删任务 | ❌ 编码固定 | ✅ 后台操作 |
失败重试 | ❌ 无 | ✅ 支持 |
告警通知(邮件、企业微信) | ❌ 无 | ✅ 支持 |
执行日志查看 | ❌ 困难 | ✅ 详细日志 |
权限管理 | ❌ 无 | ✅ 支持 |
🏗️ 常见术语速查表
术语 | 说明 |
---|---|
JobHandler | 任务处理器,即被 @XxlJob 注解的方法名 |
appname | 执行器的唯一标识,在配置中设置 |
access-token | 安全令牌,防止非法调用 |
GLUE | 在线写脚本的方式(Java、Shell、Python 等),无需重新发布服务 |
阻塞策略 | 当任务还没执行完又到了下次调度时间,如何处理(丢弃、覆盖、串行等) |
失败重试 | 任务失败后自动重试几次 |
分片广播 | 将任务拆成多个“片”,分发到不同机器并行执行,适合大数据处理 |
📦 总结:一句话理解 XXL-JOB
XXL-JOB = 调度中心(管任务) + 执行器(跑代码) + Web 界面(看结果)
它让你像使用“钉钉闹钟”一样,轻松管理和监控分布在各个服务上的定时任务。
如果你已经配置好了 xxl-job-admin
和执行器,就可以登录后台(如 http://192.168.150.101:8880/xxl-job-admin
)开始创建你的第一个定时任务了!