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

相关推荐
llz_1122 小时前
web-第二次课后作业
前端·后端·web
红尘散仙7 小时前
我把终端小说阅读器接上了 AI Agent:TRNovel 现在能用 skill 生成书源了
人工智能·后端·rust
卷毛的技术笔记9 小时前
告别硬编码!Spring AI Alibaba 实现 AI Agent 智能工具调用(Tool Calling)
java·人工智能·后端·python·spring·ai编程
会编程的土豆9 小时前
Go 语言反射(Reflection)详解
开发语言·后端·golang
喵个咪9 小时前
GoWind Toolkit Go后端代码生成 完整全流程实战
后端·go·orm
basketball61610 小时前
Go 语言从入门到进阶:4. 数组和MAP使用方法总结
开发语言·后端·golang
qq_25183645710 小时前
SpringBoot+Vue 共享电池柜管理系统 完整实现 前后端分离项目实战 完整代码
vue.js·spring boot·后端
zhangxingchao10 小时前
AI 大模型核心六:量化、Workflow 与 Agent、多轮 RAG
前端·人工智能·后端
IT_陈寒11 小时前
Vite打包时遇到的坑,原来问题出在这里
前端·人工智能·后端
ayqy贾杰12 小时前
基层管理的三板斧,在AI时代行不通了
前端·后端·团队管理