【保姆级】一篇文章手把手带你入门分布式任务调度平台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

相关推荐
man20171 小时前
【2024最新】基于springboot+vue的闲一品交易平台lw+ppt
vue.js·spring boot·后端
hlsd#1 小时前
关于 SpringBoot 时间处理的总结
java·spring boot·后端
路在脚下@1 小时前
Spring Boot 的核心原理和工作机制
java·spring boot·后端
幸运小圣1 小时前
Vue3 -- 项目配置之stylelint【企业级项目配置保姆级教程3】
开发语言·后端·rust
前端SkyRain2 小时前
后端Node学习项目-用户管理-增删改查
后端·学习·node.js
提笔惊蚂蚁3 小时前
结构化(经典)软件开发方法: 需求分析阶段+设计阶段
后端·学习·需求分析
老猿讲编程3 小时前
Rust编写的贪吃蛇小游戏源代码解读
开发语言·后端·rust
黄小耶@3 小时前
python如何使用Rabbitmq
分布式·后端·python·rabbitmq
宅小海4 小时前
Scala-List列表
开发语言·后端·scala
蔚一5 小时前
Javaweb—Ajax与jQuery请求
前端·javascript·后端·ajax·jquery