XXL-JOB是什么?
XXL-JOB就像快递公司的“总调度中心”,专门帮你的程序在不同服务器之间协调和执行定时任务。比如你有个电商系统,每天凌晨要统计订单数据、每小时要发促销短信,这些定时任务交给XXL-JOB来统一管理,它能保证任务不重复、不遗漏,还能自动应对服务器故障。
技术解释:它是一个轻量级的分布式任务调度平台,由调度中心(管理任务)和执行器(执行任务)组成,支持动态调整任务、故障转移、日志监控等功能。
XXL-JOB有什么用?
解决三大问题
- 定时任务分散难管:传统定时任务写死在代码里,改时间要重新部署,而XXL-JOB通过网页就能随时调整任务,比如双十一临时加一个库存统计任务。
- 高并发扛不住:任务分到多台服务器执行(比如100台机器同时跑数据清洗),避免单机崩溃。
- 任务执行失控:支持失败重试、超时报警(比如短信没发出去自动重试3次),还能看任务日志排查问题。
典型场景
电商:每天凌晨统计销售额、自动发邮件报表。
金融:每小时检查交易流水,发现异常立刻报警。
物联网:分片处理百万设备上报的数据(比如按设备ID分片,每台机器处理一部分)。
XXL-JOB怎么用?三步走:装调度中心→配执行器→写任务
装调度中心(搭总控台)
下载代码:从GitHub或Gitee拉取XXL-JOB源码。
初始化数据库:运行SQL脚本创建任务管理表。
启动调度中心:修改配置文件(数据库地址、端口),启动后访问网页(比如http://localhost:8080/xxl-job-admin),账号admin,密码123456。
配执行器(部署任务执行节点)
- 项目中加依赖:
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-job-core</artifactId>
<version>2.3.0</version>
</dependency>
- 写配置文件:
xxl:
job:
admin:
addresses: http://localhost:8080/xxl-job-admin # 调度中心地址
executor:
appname: my-app # 执行器名称(相当于分组)
port: 9999 # 执行器端口
- 启动执行器:项目启动后,调度中心会自动发现这个执行器。
写任务(定义具体任务)
- 写任务处理器:
@Component
public class MyJobHandler extends IJobHandler {
@Override
public ReturnT<String> execute(String param) {
System.out.println("执行任务:" + param);
return SUCCESS;
}
}
- 网页配置任务:
在调度中心网页上点“新增任务”,填任务名称、触发时间(Cron表达式)、路由策略(比如轮询或故障转移),绑定刚写的任务处理器
注意事项
任务别写太耗时:
短任务(如发短信)适合用XXL-JOB,长任务(如导出10G数据)建议拆分成小任务或用分片功能。
路由策略选对:
故障转移: 某台服务器挂了自动切到其他机器。
分片广播: 所有服务器同时执行,适合数据清洗。
日志定期清理:
XXL-JOB默认不删日志,长期运行可能占满磁盘,需配置日志保留天数。
总结
XXL-JOB是任务调度的“总控台”,解决定时任务分散、高并发扛不住、执行失控的问题。
用起来三步:搭调度中心→配执行器→写任务,半小时就能跑起来。
适用场景:电商、金融、物联网等需要稳定执行定时任务的系统。