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

相关推荐
sp4219 分钟前
漫谈 Java 轻量级的模板技术:从字符串替换到复杂模板
java·后端
2301_7951672020 分钟前
玩转Rust高级应用. ToOwned trait 提供的是一种更“泛化”的Clone 的功能,Clone一般是从&T类型变量创造一个新的T类型变量
开发语言·后端·rust
草莓熊Lotso1 小时前
C++ 方向 Web 自动化测试实战:以博客系统为例,从用例到报告全流程解析
前端·网络·c++·人工智能·后端·python·功能测试
一 乐1 小时前
旅游|内蒙古景点旅游|基于Springboot+Vue的内蒙古景点旅游管理系统设计与实现(源码+数据库+文档)
开发语言·前端·数据库·vue.js·spring boot·后端·旅游
JaguarJack1 小时前
15 个 Eloquent 高级技巧,瞬间提升你的 Laravel 应用性能
后端·php·laravel
YDS8291 小时前
苍穹外卖 —— Spring Cache和购物车功能开发
java·spring boot·后端·spring·mybatis
苍老流年1 小时前
1. SpringBoot初始化器ApplicationContextInitializer使用与源码分析
java·spring boot·后端
星光一影1 小时前
基于SpringBoot智慧社区系统/乡村振兴系统/大数据与人工智能平台
大数据·spring boot·后端·mysql·elasticsearch·vue
leonardee1 小时前
Spring 中的 @ExceptionHandler 注解详解与应用
java·后端
组合缺一1 小时前
(对标 Spring)OpenSolon v3.7.0, v3.6.4, v3.5.8, v3.4.8 发布(支持 LTS)
java·后端·spring·web·solon