XXL-JOB 是一个分布式任务调度平台,用于处理分布式系统中的定时任务调度和执行。它由开源社区开发,旨在提供高效、稳定、可扩展的任务调度解决方案。XXL-JOB 支持多种任务调度策略,具备任务执行结果实时监控、任务日志管理、调度中心高可用等特性,广泛应用于互联网和企业信息系统中。
XXL-JOB 的主要功能
任务调度:支持多种调度策略,如固定频率、CRON 表达式、自定义调度策略等。
任务管理:提供任务的增删改查功能,支持任务的启用、禁用和删除操作。
执行器管理:管理任务执行器,实现任务的负载均衡和故障转移。
日志管理:记录任务执行的详细日志,方便问题排查和分析。
调度监控:实时监控任务的调度和执行状态,提供丰富的统计信息。
高可用:支持调度中心的集群部署,提高系统的可用性和稳定性。
动态扩展:支持动态增加和移除任务执行器,实现任务调度的弹性伸缩。
XXL-JOB 的架构
XXL-JOB 主要由调度中心(Admin)和执行器(Executor)两部分组成:
调度中心(Admin):
提供任务调度和管理的用户界面。
负责任务的调度和分发,将任务指派给相应的执行器。
支持集群部署,保证高可用性。
执行器(Executor):
实际执行任务的节点,可以是独立的服务,也可以嵌入到业务系统中。
执行器注册到调度中心,接受调度中心分配的任务。
执行任务后,将执行结果和日志返回给调度中心。
安装和使用 XXL-JOB
安装调度中心(Admin)
下载 XXL-JOB: 可以从 GitHub 仓库下载 XXL-JOB 的源码或预编译包,地址是 https://github.com/xuxueli/xxl-job。
配置数据库: 创建数据库并导入
xxl-job
提供的数据库脚本,初始化调度中心所需的表。修改配置文件: 修改
application.properties
文件,配置数据库连接信息和调度中心的相关参数。启动调度中心: 使用
java -jar
命令启动 XXL-JOB Admin:java -jar xxl-job-admin-2.3.0.jar
访问调度中心: 启动成功后,打开浏览器访问
http://localhost:8080/xxl-job-admin
,默认账号密码是admin/admin123
。
配置和运行执行器(Executor)
引入依赖: 在你的项目中引入 XXL-JOB 执行器的依赖(以 Maven 为例):
<dependency> <groupId>com.xuxueli</groupId> <artifactId>xxl-job-core</artifactId> <version>2.3.0</version> </dependency>
配置执行器: 在
application.properties
文件中配置执行器的相关参数,如执行器名称、调度中心地址等。编写任务: 编写任务类并实现
IJobHandler
接口,定义任务的执行逻辑。例如:@Component public class MyJobHandler extends IJobHandler { @Override public ReturnT<String> execute(String param) throws Exception { // 任务执行逻辑 System.out.println("Executing task with param: " + param); return ReturnT.SUCCESS; } }
启动执行器: 启动包含执行器的应用,执行器会自动注册到调度中心。
配置任务: 在调度中心的管理界面上配置任务,指定任务的执行器、调度策略等。
示例配置
调度中心(Admin)的 application.properties
示例
server.port=8080
# 数据库配置
spring.datasource.url=jdbc:mysql://localhost:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&useSSL=false
spring.datasource.username=root
spring.datasource.password=root
# 调度中心配置
xxl.job.admin.login.username=admin
xxl.job.admin.login.password=admin123
xxl.job.accessToken=
执行器(Executor)的 application.properties
示例
server.port=8081
# 调度中心地址
xxl.job.admin.addresses=http://localhost:8080/xxl-job-admin
# 执行器配置
xxl.job.executor.appname=my-job-executor
xxl.job.executor.ip=
xxl.job.executor.port=9999
xxl.job.executor.logpath=/data/applogs/xxl-job/jobhandler
xxl.job.executor.logretentiondays=30
参考文档和社区
官方文档:XXL-JOB 官方文档
GitHub 项目地址:XXL-JOB GitHub
交流社区:可以在 GitHub Issues 或其他社区平台上参与讨论和提问。
通过 XXL-JOB,可以轻松实现分布式系统中的任务调度和管理,提升系统的可维护性和扩展性。
评论区