xxl-job的使用
xxl-job 简介
xxl-job 是一个分布式任务调度平台,核心设计目标是开发迅速、学习简单、轻量级、易扩展。它解决了传统任务调度系统的单点故障与调度性能瓶颈问题,支持分片广播、任务依赖、故障转移等特性。
部署 xxl-job
数据库初始化
下载官方提供的 SQL 脚本,初始化数据库表结构。SQL 脚本通常包含 xxl_job_db.sql
文件,需在 MySQL 中执行。
-- 示例:执行SQL脚本
mysql -u root -p xxl_job < xxl_job_db.sql
调度中心部署
调度中心是 xxl-job 的核心组件,负责任务管理和调度。
下载源码
从 GitHub 或 Gitee 下载 xxl-job 源码,解压后找到xxl-job-admin
模块。修改配置
编辑application.properties
文件,配置数据库连接:spring.datasource.url=jdbc:mysql://localhost:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8 spring.datasource.username=root spring.datasource.password=123456
启动调度中心
通过 Spring Boot 方式启动:java -jar xxl-job-admin-2.3.0.jar
执行器部署
执行器负责接收调度请求并执行任务逻辑。
引入依赖
在项目中添加 xxl-job 执行器依赖:<dependency><groupId>com.xuxueli</groupId><artifactId>xxl-job-core</artifactId><version>2.3.0</version> </dependency>
配置执行器
在application.yml
中配置执行器参数:xxl:job:admin:addresses: http://localhost:8080/xxl-job-adminexecutor:appname: xxl-job-executor-sampleaddress: ip: 127.0.0.1port: 9999logpath: /data/applogs/xxl-job/jobhandlerlogretentiondays: 30
启动执行器
在 Spring Boot 主类上添加注解:@SpringBootApplication public class XxlJobExecutorApplication {public static void main(String[] args) {SpringApplication.run(XxlJobExecutorApplication.class, args);} }
任务开发与配置
编写任务逻辑
通过 @XxlJob
注解定义任务方法:
@Component
public class SampleJobHandler {@XxlJob("demoJobHandler")public ReturnT<String> execute(String param) throws Exception {System.out.println("XXL-JOB, Hello World: " + param);return ReturnT.SUCCESS;}
}
调度中心配置任务
- 登录调度中心(默认地址
http://localhost:8080/xxl-job-admin
)。 - 进入「任务管理」页面,新增任务:
- 执行器:选择绑定的执行器。
- 任务描述:填写任务描述信息。
- 调度类型:支持 CRON 和固定速率。
- JobHandler:填写
@XxlJob
注解中定义的任务名称(如demoJobHandler
)。 - 其他参数:按需配置任务参数、路由策略等。
高级特性
分片任务
适用于大数据量并行处理场景:
@XxlJob("shardingJobHandler")
public ReturnT<String> shardingJob(String param) {// 获取分片信息ShardingUtil.ShardingVO shardingVO = ShardingUtil.getShardingVo();System.out.println("分片编号:" + shardingVO.getIndex());return ReturnT.SUCCESS;
}
任务依赖
通过父子任务实现依赖关系:
- 父任务执行完成后触发子任务。
- 在任务配置中填写子任务 ID(多个用逗号分隔)。
运维与监控
日志查看
调度中心提供任务执行日志查询功能,支持实时查看执行状态和日志详情。告警配置
在「任务管理」中配置告警邮箱,任务失败时自动触发邮件通知。调度报表
通过「调度中心」首页查看任务调度次数、成功/失败率等统计数据。
注意事项
- 执行器需保持与调度中心的网络连通性。
- 任务逻辑需避免长时间阻塞,建议设置超时时间。
- 分片任务需确保任务逻辑支持幂等性。