java项目接入xxl-job实现分布式定时任务调度需三步:部署调度中心、引入xxl-job-core客户端依赖、编写@xxljob注解的任务handler;它轻量开箱即用,不依赖spring cloud或zookeeper。

在 Java 项目中接入 XXL-JOB 实现分布式定时任务调度,核心是三步:部署调度中心、引入客户端依赖、编写并注册执行器任务。它不依赖 Spring Cloud 或 ZooKeeper,轻量且开箱即用。
部署 XXL-JOB 调度中心
调度中心是任务的统一管理后台,需独立部署:
- 从 GitHub 官方仓库 下载最新 release 包(如 xxl-job-admin-2.4.1.jar)
- 修改 application.properties 中数据库配置(支持 MySQL 5.7+),初始化 SQL 脚本已包含在源码
doc/db/tables_xxl_job.sql - 启动服务:
java -jar xxl-job-admin.jar,默认访问http://localhost:8080/xxl-job-admin,账号密码为admin/123456
在 Spring Boot 项目中集成执行器
你的业务项目作为“执行器”,负责真正跑任务逻辑:
- Maven 引入依赖(版本建议与调度中心一致):
<dependency><groupid>com.xuxueli</groupid><artifactid>xxl-job-core</artifactid><version>2.4.1</version></dependency>
- 配置 application.yml,指定执行器名称、地址、端口及调度中心地址:
xxl:
job:
admin:
addresses: http://localhost:8080/xxl-job-admin
executor:
appname: my-executor
ip:
port: 9999
logpath: /data/applogs/xxl-job/jobhandler
logretentiondays: 30
- 定义配置类(自动装配
XxlJobSpringExecutor),确保 Bean 正确初始化 - 启动项目后,在调度中心「执行器管理」里会自动注册名为
my-executor的执行器
编写并注册定时任务 Handler
任务逻辑通过 @XxlJob("jobName") 注解标识,方法必须返回 ReturnT<string></string>:
- 新建一个 Spring Bean 类,添加注解方法:
@Component
public class DemoJobHandler {
@XxlJob("demoJob")
public ReturnT<string> execute(String param) throws Exception {
System.out.println("执行定时任务,参数:" + param);
return ReturnT.SUCCESS;
}
}</string>
- 登录调度中心 → 「任务管理」→ 「新增」,填写:任务描述、执行器(选 my-executor)、调用方式(BEAN)、JobHandler(填 demoJob)、Cron 表达式(如
0 0 * * * ?每小时执行) - 保存后启用任务,调度中心会在 cron 触发时远程调用该执行器上的
demoJob方法
常见问题与注意点
避免踩坑的关键细节:
- 执行器
appname必须与调度中心里注册的名称完全一致(区分大小写) - 若多实例部署,所有实例使用相同
appname即可自动实现负载均衡和故障转移 - 任务方法不能是 private 或 static;参数类型只支持 String,复杂参数建议 JSON 序列化传参
- 日志路径需提前创建并赋予写权限,否则任务日志无法记录
- 生产环境务必关闭调度中心的注册发现(
xxl.job.admin.enabled=false防误配)
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











