一、 XXL-Job 简介
XXL-Job 是一个开源的分布式任务调度平台,主要用于解决大规模任务调度问题。其设计理念是轻量、高效、易扩展,能够适用于各种复杂的分布式系统。
官方文档地址:https://www.xuxueli.com/xxl-job/
源码仓库地址
https://github.com/xuxueli/xxl-job
http://gitee.com/xuxueli0323/xxl-job
中央仓库地址
<!-- http://repo1.maven.org/maven2/com/xuxueli/xxl-job-core/ -->
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-job-core</artifactId>
<version>${最新稳定版本}</version>
</dependency>
特点:
- 简单易用:提供友好的 Web 管理界面
- 灵活调度:支持多种调度策略和调度类型
- 高可用:支持分布式部署和任务执行的高可用性
- 强扩展性:易于与现有系统集成
二、核心概念
-
调度器(Scheduler): 负责管理和调度任务,通常部署在服务端。
-
执行器(Executor): 执行调度器分配的任务,通常部署在应用服务中。
-
调度任务(Job): 具体执行的任务,可以是简单的 HTTP 调用、Shell 脚本,或是 Java 方法。
-
调度策略: 指定任务的执行策略,如固定频率执行、Cron 表达式等。
三、 环境配置
在开始使用 XXL-Job 之前,我们需要先搭建其运行环境。这里介绍的是基于 Spring Boot 项目的基本搭建步骤。
环境要求
- Maven3+
- Jdk1.8+
- Mysql8.0+
1. 下载 XXL-Job Admin:
前往 XXL-Job gitee 网站,下载最新版本的 XXL-Job Admin。
调度中心支持集群部署,集群情况下各节点务必连接同一个mysql实例; 如果mysql做主从,调度中心集群节点务必强制走主库;
2. 配置数据库:
创建 MySQL 数据库并导入官网提供的初始化 SQL 脚本,初始化SQL脚本位置为:
/xxl-job/doc/db/tables_xxl_job.sql
3. 修改配置文件:
在 application.properties 中配置数据库连接信息。
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=root_pwd
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
### 报警邮箱
spring.mail.host=smtp.qq.com
spring.mail.port=25
spring.mail.username=xxx@qq.com
spring.mail.password=xxx
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
### 调度中心通讯TOKEN [选填]:非空时启用;
xxl.job.accessToken=
### 调度中心国际化配置 [必填]: 默认为 "zh_CN"/中文简体, 可选范围为 "zh_CN"/中文简体, "zh_TC"/中文繁体 and "en"/英文;
xxl.job.i18n=zh_CN
## 调度线程池最大线程配置【必填】
xxl.job.triggerpool.fast.max=200
xxl.job.triggerpool.slow.max=100
### 调度中心日志表数据保存天数 [必填]:过期日志自动清理;限制大于等于7时生效,否则, 如-1,关闭自动清理功能;
xxl.job.logretentiondays=30
4. 访问管理界面:
打开浏览器,访问: http://localhost:8080/xxl-job-admin
,
默认账号/密码 admin/admin
四、基本操作
在熟悉了 XXL-Job 的核心概念后,我们来介绍一些基本操作,包括创建任务、配置任务和查看任务执行日志。
- 创建任务:
- 登录 XXL-Job Admin 管理界面。
- 进入任务管理页面,点击“新增”按钮。
- 填写任务信息,包括任务描述、调度类型、执行器等。
{
"jobGroup": 1,
"jobDesc": "示例任务",
"author": "admin",
"scheduleType": "CRON",
"scheduleConf": "0 0/1 * * * ?",
"executorRouteStrategy": "ROUND",
"executorHandler": "demoJobHandler",
"executorParam": "",
"glueType": "BEAN",
"executorBlockStrategy": "SERIAL_EXECUTION",
"misfireStrategy": "DO_NOTHING",
"executorTimeout": 0,
"executorFailRetryCount": 0
}
- 配置任务:
在任务列表中找到刚刚创建的任务,点击“编辑”按钮。
配置任务执行参数,如执行器的路由策略、任务超时时间等。
查看任务日志:
在任务列表中找到需要查看的任务,点击“日志”按钮。
查看任务的执行记录和日志信息,排查任务执行过程中的问题。
- 进阶应用
- 分布式部署:
配置多台调度器和执行器,实现高可用的分布式调度。
使用 Nginx 等负载均衡工具分发请求。
任务监控和报警:
配置任务的执行监控,实时获取任务的执行状态。
设置报警规则,当任务执行失败或超时时发送报警通知。
五、与 Spring Boot 集成:
在 Spring Boot 项目中引入 XXL-Job 执行器依赖。
配置 XXL-Job 执行器相关参数,实现任务的分布式执行。
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-job-core</artifactId>
<version>2.3.0</version>
</dependency>
六. 常见问题及解决方案
- 问题:任务执行失败
检查执行器是否启动,并确保与调度器的网络连接正常。
查看任务执行日志,定位具体错误信息。
- 问题:任务未按时执行
确认调度策略配置正确,特别是 Cron 表达式。
检查调度器的运行状态,确保其正常工作。
- 问题:执行日志丢失
检查日志存储配置,确保日志服务正常运行。
定期备份日志数据,防止数据丢失。