在现代软件开发中,任务调度是一个关键环节,尤其是在需要定时执行任务、批量处理数据或监控系统状态的场景中。XXL-JOB 是一个功能强大且易于使用的分布式任务调度平台,能够帮助开发者高效地管理和调度任务。本文将详细介绍 XXL-JOB 的核心概念、安装方法、基本用法以及一些高级技巧,帮助你掌握这一强大的工具。
核心概念
1. 分布式任务调度
XXL-JOB 是一个分布式任务调度平台,支持多节点部署,能够处理大规模的任务调度需求。通过分布式架构,XXL-JOB 可以提高任务执行的可靠性和效率。
2. 任务管理
XXL-JOB 提供了丰富的任务管理功能,包括任务的创建、编辑、删除、暂停和恢复。开发者可以通过 Web 界面轻松管理任务。
3. 定时任务
XXL-JOB 支持多种定时任务配置方式,包括 Cron 表达式、固定频率和固定延迟。开发者可以根据需求灵活配置任务的执行时间。
4. 任务监控
XXL-JOB 提供了详细的任务监控功能,包括任务执行日志、任务执行状态和任务执行统计。开发者可以通过这些监控信息及时发现和解决问题。
5. 高可用性
XXL-JOB 支持高可用性部署,通过主备模式和负载均衡,确保任务调度的稳定性和可靠性。
安装方法
1. 下载和解压
首先,从 XXL-JOB 的官方 GitHub 仓库下载最新版本的源码,并解压到本地目录。
wget https://github.com/xuxueli/xxl-job/releases/download/v2.3.0/xxl-job-2.3.0.zip
unzip xxl-job-2.3.0.zip
cd xxl-job-2.3.0
2. 配置数据库
XXL-JOB 使用 MySQL 作为数据库,需要先配置数据库连接信息。编辑 xxl-job-admin/src/main/resources/application.properties
文件。
### xxl-job, admin config
xxl.job.i18n=en
### xxl-job, admin addresses
xxl.job.admin.addresses=http://127.0.0.1:8080/xxl-job-admin
### xxl-job, email config
xxl.job.mail.host=smtp.qq.com
xxl.job.mail.port=25
xxl.job.mail.username=xxx@qq.com
xxl.job.mail.password=xxxxxx
xxl.job.mail.from=xxx@qq.com
### xxl-job, access token
xxl.job.accessToken=
### xxl-job, log path
xxl.job.triggerpool.fast.max=64
xxl.job.triggerpool.slow.max=100
xxl.job.logretentiondays=30
### xxl-job, datasource
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=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
3. 启动 Admin
启动 XXL-JOB 的 Admin 服务。
cd xxl-job-admin
mvn clean package -Dmaven.test.skip=true
cd target
java -jar xxl-job-admin-2.3.0.jar
4. 启动 Executor
启动 XXL-JOB 的 Executor 服务。
cd xxl-job-executor-sample
mvn clean package -Dmaven.test.skip=true
cd target
java -jar xxl-job-executor-sample-2.3.0.jar
基本用法
1. 创建任务
登录 XXL-JOB 的 Web 管理界面,创建一个新的任务。
- 任务名称:输入任务的名称。
- 任务描述:输入任务的描述。
- 任务组:选择或创建一个新的任务组。
- JobHandler:输入任务的处理器名称。
- 任务路由策略:选择任务的路由策略,如轮询、随机等。
- Cron 表达式:输入任务的 Cron 表达式,配置任务的执行时间。
- 阻塞处理策略:选择任务的阻塞处理策略,如单机串行、丢弃后续调度等。
- 任务超时时间:设置任务的超时时间。
- 失败重试次数:设置任务失败后的重试次数。
2. 编辑任务
在任务列表中选择一个任务,点击编辑按钮进行修改。
- 任务名称:修改任务的名称。
- 任务描述:修改任务的描述。
- 任务组:修改任务组。
- JobHandler:修改任务处理器名称。
- 任务路由策略:修改任务路由策略。
- Cron 表达式:修改任务的 Cron 表达式。
- 阻塞处理策略:修改任务的阻塞处理策略。
- 任务超时时间:修改任务的超时时间。
- 失败重试次数:修改任务失败后的重试次数。
3. 删除任务
在任务列表中选择一个任务,点击删除按钮进行删除。
4. 暂停任务
在任务列表中选择一个任务,点击暂停按钮暂停任务的执行。
5. 恢复任务
在任务列表中选择一个任务,点击恢复按钮恢复任务的执行。
高级技巧
1. 使用 JobHandler
JobHandler 是任务的具体执行逻辑,可以通过继承 IJobHandler
接口实现。
import com.xxl.job.core.handler.annotation.XxlJob;
import com.xxl.job.core.handler.IJobHandler;
import com.xxl.job.core.log.XxlJobLogger;
import org.springframework.stereotype.Component;
@Component
public class SampleXxlJob {
@XxlJob("demoJobHandler")
public void demoJobHandler() throws Exception {
XxlJobLogger.log("XXL-JOB, Hello World.");
for (int i = 0; i < 5; i++) {
XxlJobLogger.log("beat at:" + i);
Thread.sleep(1000);
}
XxlJobLogger.log("XXL-JOB, Hello World.");
}
}
2. 配置多 Executor
在 xxl-job-executor-sample/src/main/resources/application.properties
文件中配置多个 Executor。
### xxl-job, admin address list, such as "http://address" or "http://address01,http://address02"
xxl.job.admin.addresses=http://127.0.0.1:8080/xxl-job-admin
### xxl-job, executor appname
xxl.job.executor.appname=xxl-job-executor-sample
### xxl-job, executor ip
xxl.job.executor.ip=
### xxl-job, executor port
xxl.job.executor.port=9999
### xxl-job, executor log path
xxl.job.executor.logpath=/data/applogs/xxl-job/jobhandler
### xxl-job, executor log retension days
xxl.job.executor.logretentiondays=30
3. 使用 Webhook
XXL-JOB 支持通过 Webhook 调用外部服务。
{
"jobId": 1,
"executorHandler": "demoJobHandler",
"executorParams": "demoJobHandler",
"addressList": null,
"scheduleTime": 1633072800000,
"glueType": "BEAN",
"glueSource": null,
"glueUpdatetime": 1633072800000,
"broadcastIndex": 0,
"broadcastTotal": 0,
"executorTimeout": 0,
"executorFailRetryCount": 0,
"glueVersion": 0,
"triggerTime": 1633072800000,
"triggerCode": 200,
"triggerMsg": null,
"handleTime": 1633072800000,
"handleCode": 200,
"handleMsg": null,
"alarmStatus": 0
}
4. 使用监控
XXL-JOB 提供了详细的监控功能,可以通过 Web 界面查看任务的执行日志和执行状态。
- 任务日志:查看任务的执行日志,了解任务的执行情况。
- 任务状态:查看任务的执行状态,包括成功、失败、运行中等。
- 任务统计:查看任务的执行统计,包括任务的执行次数、执行时间等。
总结
XXL-JOB 是一个功能强大且易于使用的分布式任务调度平台,能够帮助开发者高效地管理和调度任务。通过本文的介绍,你已经掌握了 XXL-JOB 的核心概念、安装方法、基本用法以及一些高级技巧。希望这些内容能够帮助你在项目中更好地使用 XXL-JOB,提升任务调度的效率和可靠性。