XXL-JOB
什么是 XXL-JOB
XXL-JOB 是一个开源的 分布式任务调度平台,用来代替传统的 Quartz、Spring Task 等。
主要功能
- 定时任务调度(支持 CRON 表达式)
- 分布式执行(多个执行器节点)
- 可视化任务管理(Web 控制台)
- 执行日志在线查看
- 失败重试 & 失败告警
- 分片广播任务(支持大任务拆分成子任务并行执行)
📌 XXL-JOB 典型架构
- 调度中心(xxl-job-admin)
- 提供任务管理后台(新建任务、修改、暂停、删除)
- 负责任务调度、分发给执行器
- 管理任务执行日志、失败告警等
- 执行器(xxl-job-executor)
- 部署在业务服务里
- 接收调度中心的任务调度请求
- 执行业务逻辑
- 调度中心和执行器通过 HTTP 通信。
📌 使用步骤
- 接入执行器
- 在业务项目里引入 xxl-job-core 依赖
- 配置执行器信息(执行器名称、调度中心地址)
- nacos 或者 yaml文件配置
- 编写任务方法(加上 @XxlJob(“handlerName”) 注解)
1
2
3
4
5
6
7
8
9@Component
public class DemoJob {
@XxlJob("demoHandler")
public void demoJobHandler() throws Exception {
System.out.println("执行任务: " + new Date());
}
}
- 登录 管理后台 配置执行器
- 选择执行器
- 填写 JobHandler 名称(比如 demoHandler)
- 配置 CRON 表达式(比如 0 0/5 * ? 每 5 分钟执行一次)
- 保存并启动任务



总结
- 为什么 Spring Task 不适合分布式
- 因为 Spring Task 是基于JVM的,如果一个服务 有一个Spring Task 定时任务,但他有三个实例,那么这个定时任务会被三个实例都执行
- 为什么 XXL-JOB 适合 分布式
- 在 XXL-JOB 里,有一个独立的 调度中心(xxl-job-admin),负责统一下发任务,实例(执行器)只负责接收并执行。
- 👉 这样即使部署多个节点,也不会发生 重复执行,因为调度中心可以确保只派发一次任务。

- 👉 这样即使部署多个节点,也不会发生 重复执行,因为调度中心可以确保只派发一次任务。
- 📌 3. 分布式任务分片
- XXL-JOB 支持分片广播:
- 比如一个任务需要处理 1000 万条数据,可以拆成 10 份。
- 调度中心会把任务分成 10 片,分配给不同的执行器实例跑。
- 👉 分布式系统里最需要的就是这种 并行处理能力,Spring Task 天然做不到。
| 对比点 | Spring Task | XXL-JOB |
|---|---|---|
| 部署方式 | 嵌入应用,随应用启动 | 独立调度中心 + 执行器(分布式) |
| 定时配置 | 写在代码里,需重新发布 | 可视化管理后台,支持动态修改 |
| 集群支持 | 不支持(需自己加分布式锁) | 原生支持,任务只会执行一次 |
| 扩展能力 | 弱,适合小规模 | 强,支持分片、路由策略、负载均衡 |
| 日志 & 监控 | 自己实现 | 自带调度日志、执行日志、失败告警 |
| 使用场景 | 单机任务、轻量定时任务 | 分布式任务、复杂调度、大规模批处理 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Little Monste'Blog!
评论




