Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Java XxlJob 必知必会

Java XxlJob 必知必会

作者头像
Wu_Candy
发布于 2022-07-04 13:45:17
发布于 2022-07-04 13:45:17
84200
代码可运行
举报
文章被收录于专栏:无量测试之道无量测试之道
运行总次数:0
代码可运行
通过 3W1H 来认识XxlJob
Step1: 第一个W(What)先来看看它是什么?

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

Step2: 第二个W (Why)为什么要去学习XxlJob?
  1. 现在越来越多的企业都开始在使用 XxlJob 做为第三方平台进行任务调度。
  2. XxlJob 上手容易,学习成本低,功能强大。
  3. 涉及到 XxlJob 相关的业务需要有深入的了解才可以做好全面的测试。
Step3: 第三个W (Where)它在系统框架中的位置?

先来看看 XxlJob 自身的系统结构:

Step4: H即How 怎么样去部署和使用?

这里以单机部署为示例

(1):clone 代码:git clone https://github.com/xuxueli/xxl-job

(2):初始化数据库

/xxl-job/doc/db/tables_xxl_job.sql

数据库相关说明:

  1. -xxl_job_lock:任务调度锁表;
  2. -xxl_job_group:执行器信息表,维护任务执行器信息;
  3. -xxl_job_info:调度扩展信息表,用于保存XXL-JOB调度任务的扩展信息,如任务分组、任务名、机器地址、执行器、执行入参和报警邮件等等;
  4. -xxl_job_log:调度日志表,用于保存XXL-JOB任务调度的历史信息,如调度结果、执行结果、调度入参、调度机器和执行器等等;
  5. -xxl_job_log_report:调度日志报表,用户存储XXL-JOB任务调度日志的报表,调度中心报表功能页面会用到;
  6. -xxl_job_logglue:任务GLUE日志,用于保存GLUE更新历史,用于支持GLUE的版本回溯功能;
  7. -xxl_job_registry:执行器注册表,维护在线的执行器和调度中心机器地址信息;
  8. -xxl_job_user:系统用户表;

(3):调度中心配置

/xxl-job/xxl-job-admin/src/main/resources/application.properties

主要是配置了数据库的连接:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
### web
server.port=8080
server.servlet.context-path=/xxl-job-admin
### 调度中心JDBC链接:链接地址请保持和 2.1章节 所创建的调度数据库的地址一致
spring.datasource.url=jdbc:mysql://192.168.3.2:3306/xxl_job_test?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai
spring.datasource.username=beta
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

(4):执行器项目配置

要与调度中心部署的地址一致

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
### xxl-job admin address list, such as "http://address" or "http://address01,http://address02"
### 调度中心部署跟地址 [选填]:如调度中心集群部署存在多个地址则用逗号分隔。执行器将会使用该地址进行"执行器心跳注册""任务结果回调";为空则关闭自动注册;
xxl.job.admin.addresses=http://127.0.0.1:8080/xxl-job-admin

### xxl-job executor appname
### 执行器AppName [选填]:执行器心跳注册分组依据;为空则关闭自动注册
xxl.job.executor.appname=xxl-job-executor-demo

此处的执行器名称会自动注册到调度中心平台上面去,如下所示:

(5):启动服务

先使用IDEA来启动调度中心项目,如下所示:

xxl-job-admin 的8080 端口被启动了。

再使用IDEA来启动执行器项目,如下所示:

xxl-job-Executor 的8081端口被启动了。

xxljob 运行原理

运行原理图所示:

原理解释:

1. 任务执行器根据配置的调度中心的地址,启动注册线程向调度中心的执行器管理发起自动注册。执行器管理中保存着注册执行器,后续会根据这个注册信息给执行器下发任务。

2. 如果此时有需要执行的任务,任务管理模块会根据执行器管理中注册的执行器信息,向任务执行器下发任务。任务执行器中的任务执行服务接受到任务以后会将任务发送到待执行任务的队列中,队列中的任务会由执行线程 JobHandler 依次获取并且执行。

这里会维护一个任务执行的线程池,池中就是一个个 JobHandler 线程,它们是执行任务的主力军。

3. JobHandler 执行器基于线程池执行任务,并把执行结果放入执行结果队列中,同时会把执行日志写入任务日志文件中,以供日志查询。

然后通知毁掉线程,告知任务执行完毕,回调线程会通知调度中心的监控运维模块,任务执行完毕。

4. 用户可以在调度中心查看任务日志,其过程是通过发送日志查询请求给任务执行器中的日志服务,然后查询任务日志文件实现的。

实际示例分析

示例:

  1. 在任务执行器端开发一个任务示例:

内容非常的简单,就是获取请求的参数,然后再日志输出。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@XxlJob("testJobHander")
public void testJobHander() throws  Exception{
    String param = XxlJobHelper.getJobParam();
    XxlJobHelper.log("the param is:"+param);
}

2. 在调度中心 > 任务管理【页面】>【新增】任务相关配置

如下所示:

3. 是点击【操作】下面的执行一次【输入参数为:this is test】,可以查看调度日志:

4. 可以查看【运行报表】数据:

end

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-11-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 无量测试之道 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
xxl-job【后端专题】
xxl-job-admin目录配置文件 application.properties
高大北
2022/11/14
7891
xxl-job【后端专题】
xxl-job Vs ElasticJob,谁牛?
1. xxl-job 2. 运行 xxl-job 3. 开发定时任务 3.1 项目创建及配置 3.2 定时任务开发方式 4. 小结 前两天写了一篇文章介绍了一下 ElasticJob,有不少小伙伴强烈建议讲讲 xxl-job,其实 ElasticJob 本来就是一个引子,松哥本来就是想和大家分享 xxl-job 的(手动狗头。 1. xxl-job 松哥也在微信群里和小伙伴们讨论过各自到底用的是 xxl-job 还是 ElasticJob,讨论的结果就是,xxl-job 使用的人更多一些。 不说功能的优劣,
江南一点雨
2022/03/24
1.9K0
springboot整合xxl-job分布式定时任务【图文完整版】
今天小编就以现在比较火的分布式定时任务xxl-job,优点比较轻量级,但是从21年到现在没有比较大的更新! 现在最新的好像是2.4.0。
掉发的小王
2022/09/23
1.2K0
springboot整合xxl-job分布式定时任务【图文完整版】
分布式任务调度框架XXL-JOB入门级教程
下载源码导入idea,源码地址:https://gitee.com/xuxueli0323/xxl-job.git
小熊学Java
2023/07/16
1.2K0
分布式任务调度框架XXL-JOB入门级教程
分布式任务调度利器—Xxl-job框架详解
近期开发中的功能中需要用到定时任务来做数据库的备份和文件的定时删除,所以调研了当前比较主流的几个定时任务框架,经过对比选定了今天要讲的xxl-job,所以这篇文章,我主要和大家分享一下xxl-job的学习总结,记录一下在分布式项目下如何优雅的使用xxl-job实现定时任务。
灰小猿
2024/05/25
27.9K0
分布式任务调度利器—Xxl-job框架详解
【黑马头条】day20—xxl-job
当前软件的架构已经开始向分布式架构转变,将单体结构拆分为若干服务,服务之间通过网络交互来完成业务处理。在分布式架构下,一个服务往往会部署多个实例来运行我们的业务,如果在这种分布式系统环境下运行任务调度,我们称之为分布式任务调度。
陶然同学
2023/04/02
6930
【黑马头条】day20—xxl-job
spring boot项目整合xxl-job
关于分布式任务调度平台XXL-JOB,作者 许雪里 在其发布的中文教程中已经介绍的很清楚了,这里就不做过多的介绍了。按照文档搭建xxl-job,做此记录。
BUG弄潮儿
2020/06/29
4.2K0
分布式调度XXL-JOB
在业务类中方法中贴上这个注解,然后在启动类上贴上@EnableScheduling注解
yuanshuai
2023/11/17
3150
分布式调度XXL-JOB
springboot整合xxl-job 分布式任务调度
注意:调度中心支持集群部署,集群情况下各节点务必连接同一个mysql实例,如果mysql做主从,调度中心集群节点务必强制走主库
用户10125653
2022/11/10
1.3K0
springboot整合xxl-job 分布式任务调度
SpringBoot+XXL-JOB:高效定时任务管理
在现代应用程序中,定时任务是不可或缺的一部分。Spring Boot 和 XXL-Job 为你提供了一个强大的工具组合,以简化任务调度和管理。
程序员皮皮林
2024/10/10
8580
SpringBoot+XXL-JOB:高效定时任务管理
XXL-Job框架入门介绍
特点: 1.调度中心,任务执行器独立部署,互不影响。 2.调度中心和任务执行器都支持集群化部署,避免出现单点故障。 3.调用中心和执行器之间通过HTTP协议进行通信,因此需要把它们部署在能相互连通的网络环境。
编程随笔
2022/04/29
1.2K0
XXL-Job框架入门介绍
分布式任务调度平台 → XXL-JOB 初探
相信大家对任务调度都不陌生,说的通熟一点就是定时任务;这个在我们的项目中或多或少都存在,我们可以用 JDK 自带的(Timer、ScheduledExecutor)来实现,也可以用 Spring 的 Scheduler 来实现,不管用以上哪种方式,我们都是在单机上跑,如果我们以集群的方式部署,会不会出现什么问题 ?
青石路
2020/07/14
1.3K0
三千字带你搞懂XXL-JOB任务调度平台
所以定时任务在平时开发中并不少见,而且对于现在快速消费的时代,每天都需要发送各种推送,消息都需要依赖定时任务去完成,应用非常广泛。
java技术爱好者
2020/10/10
8.5K0
三千字带你搞懂XXL-JOB任务调度平台
分布式任务调度的解决方案
随着系统规模的发展,定时任务数量日益增多,任务也变得越来越复杂,尤其是在分布式环境下,存在多个业务系统,每个业务系统都有定时任务的需求,如果都在自身系统中调度,一方面增加业务系统的复杂度,另一方面也不方便管理,因此需要有一个任务平台对分散的任务进行统一管理调度,基于目前的情况,任务平台需要支持以下几个方面:
慕容千语
2021/07/20
1.4K0
分布式任务调度平台XXL-JOB
任务调度是指基于给定的时间点,给定的时间间隔又或者给定执行次数自动的执行任务。我们可以思考一下在以下场景中,我们应该怎么实现:
我没有三颗心脏
2019/10/08
2.3K0
分布式任务调度平台XXL-JOB
快速学习-XXL-JOB总体设计
将调度行为抽象形成“调度中心”公共平台,而平台自身并不承担业务逻辑,“调度中心”负责发起调度请求。
cwl_java
2020/09/24
1.9K0
快速学习-XXL-JOB总体设计
分布式任务调度平台XXL-JOB,不了解一下?
任务调度是指基于给定的时间点,给定的时间间隔又或者给定执行次数自动的执行任务。我们可以思考一下在以下场景中,我们应该怎么实现:
Bug开发工程师
2019/12/05
1.3K0
三分钟搞定 XXL-JOB 分布式任务调度平台
点击上方“芋道源码”,选择“设为星标” 管她前浪,还是后浪? 能浪的浪,才是好浪! 每天 10:33 更新文章,每天掉亿点点头发... 源码精品专栏 原创 | Java 2021 超神之路,很肝~ 中文详细注释的开源项目 RPC 框架 Dubbo 源码解析 网络应用框架 Netty 源码解析 消息中间件 RocketMQ 源码解析 数据库中间件 Sharding-JDBC 和 MyCAT 源码解析 作业调度中间件 Elastic-Job 源码解析 分布式事务中间件 TCC-Transaction
芋道源码
2022/05/16
1.5K0
三分钟搞定 XXL-JOB 分布式任务调度平台
SpringBoot入门建站全系列(三十二)接入xxl-job分布式任务调度平台
XXL-JOB是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。
品茗IT
2020/05/28
1.6K0
分布式任务调度平台XXL-JOB
XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。
用户1518699
2018/09/12
4.2K0
分布式任务调度平台XXL-JOB
相关推荐
xxl-job【后端专题】
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档