【保姆级】一篇文章手把手带你入门分布式任务调度平台XXL-JOB

概述

XXL-JOB is a distributed task scheduling framework. It's core design goal is to develop quickly and learn simple, lightweight, and easy to expand. Now, it's already open source, and many companies use it in production environments, real "out-of-the-box".

XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。

------官方介绍

官方网站:

中文

www.xuxueli.com/xxl-job/

英文

www.xuxueli.com/xxl-job/en/

源码下载地址:

github.com/xuxueli/xxl...

我们可以下载源码到本地,方便学习~

window相关操作系统下zip格式的,Mac相关下tar.gz格式的,下载后解压打开基本就长下面这个样子~

其实

源码结构如下图:

案例

初始化案例数据库

在本地的MySQL中执行官方提供的调度数据库SQL(在doc文件夹下的db文件夹里)

复制到MySQL中执行即可,执行完成后MySQL中会新增一个名为"xxl_job"的数据库,具体如下图:

值得注意的是:在集群部署时,各节点需要连接同一个MySQL实例(如果MySQL采用半主从配置,则需要连接主库)

调度中心的配置与启动

配置文件位置如下图(记得将数据库密码改成你自己的)

哦对了大致介绍下这个文件中比较重要的配置吧

调度中心的JDBC链接

ini 复制代码
### 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=root_pwd
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

报警邮箱配置

ini 复制代码
### xxl-job, email
spring.mail.host=smtp.qq.com
spring.mail.port=25
spring.mail.username=xxx@qq.com
spring.mail.from=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

国际化配置

swift 复制代码
### xxl-job, i18n (default is zh_CN, and you can choose "zh_CN", "zh_TC" and "en")
xxl.job.i18n=zh_CN

翻译下注释:默认为 "zh_CN"(就是中文简体), 可选范围为 "zh_CN"(中文简体), "zh_TC"(中文繁体)和"en"(英文)

还有调度线程池最大线程的配置

ini 复制代码
## xxl-job, triggerpool max size
xxl.job.triggerpool.fast.max=200
xxl.job.triggerpool.slow.max=100

调度中心日志表数据保存天数,过期的日志会被自动清理

ini 复制代码
### xxl-job, log retention days
xxl.job.logretentiondays=30

ps:限制>=7时生效,否则则会关闭自动清理功能

点击运行,启动项目,如下图则启动成功

访问地址:http://localhost:8080/xxl-job-admin

登陆账号:admin

登陆密码:123456

页面如下图所示:

执行器的配置与启动

这里以官方提供示例代码中的xxl-job-executor-sample-springboot模块为例,我们看下它的配置文件:

重要参数说明:

ini 复制代码
xxl.job.admin.addresses=http://127.0.0.1:8080/xxl-job-admin

用于配置调度中心部署地址,存在多个地址则用逗号分,为空则关闭自动注册,执行器将会使用该地址进行"执行器心跳注册"和"任务结果回调"

ini 复制代码
xxl.job.executor.appname=xxl-job-executor-sample

用于配置执行器名称,是执行器心跳注册分组依据,同样的,如果为空则关闭自动注册

ini 复制代码
xxl.job.executor.address=
xxl.job.executor.ip=
xxl.job.executor.port=9999

这三个地址信息主要用于 "执行器注册" 和 "调度中心请求并触发任务",其中address是执行器注册(最优先使用),为空时使用内嵌服务 IP:PORT 作为注册地址;ip是执行器IP(默认为空,表示自动获取IP,可手动指定);port表示执行器端口号(默认9999,小于等于0则自动获取)

ini 复制代码
### xxl-job executor log-path
xxl.job.executor.logpath=/data/applogs/xxl-job/jobhandler

这里配置了日志文件的存储位置(可以改成自己设置的文件夹)

启动执行器:

显示如下信息则证明启动成功:

此时我们打开http://localhost:8080/xxl-job-admin/jobinfo 就可以看到任务调度中心新增了一个任务,如下图

创建任务

配置好必填项即可点击保存

这里我们使用了BEAN模式的配置方式,即在要执行的方法上加如下注解:

ini 复制代码
@XxlJob(value="自定义jobhandler名称", init = "JobHandler初始化方法", destroy = "JobHandler销毁方法")

注解value值对应的是调度中心新建任务的JobHandler属性的值,示例代码的配置如下:

创建成功~

启动任务并查看日志

点击操作,选择"启动"

点击确认,启动该job

可以看到刚才启动的job的状态从"STOP"变成了"RUNNING"

然后就可以在配置的日志目录下,看到新生成的日志文件

随意打开一个,就可以看到demoJobHandler中的执行结果,具体如下图:

c

相关推荐
程序猿阿越30 分钟前
Kafka源码(一)Controller选举与创建Topic
java·后端·源码
程序员爱钓鱼30 分钟前
Go语言项目工程化 — 常见开发工具与 CI/CD 支持
开发语言·后端·golang·gin
Jiude1 小时前
MinIO 社区版被故意阉割,Web管理功能全面移除。我来试试国产RustFS
后端·docker·架构
仰望星空@脚踏实地1 小时前
Spring Boot Web 服务单元测试设计指南
spring boot·后端·单元测试
羊小猪~~1 小时前
数据库学习笔记(十七)--触发器的使用
数据库·人工智能·后端·sql·深度学习·mysql·考研
用户8324951417321 小时前
JAVA 版本多版本切换 - 傻瓜式操作工具
后端
estarlee1 小时前
随机昵称网名API接口教程:轻松获取百万创意昵称库
后端
明天好,会的1 小时前
跨平台ZeroMQ:在Rust中使用zmq库的完整指南
开发语言·后端·rust
追逐时光者2 小时前
C#/.NET/.NET Core优秀项目和框架2025年6月简报
后端·.net
llwszx3 小时前
Spring中DelayQueue深度解析:从原理到实战(附结构图解析)
java·后端·spring·delayqueue·延迟任务