【笔记】分布式任务调度平台XXL-JOB
这篇笔记主要记录以下内容:
(1)第一次启动xxl-job的过程
(2)模块、文件、数据库(表和字段)的作用
(3)极少的源码解读(XxlJobConfig)
有点像实验报告(笑)文章前后都有列出参考文章,感谢各位大佬
参考:
xxl-job详解_xxljob-CSDN博客
工作笔记(五十六)— xxl-job - 知乎
GitHub:https://github.com/xuxueli/xxl-job
gitee:xxl-job: 一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。
1、下载源码
git clone https://gitee.com/xuxueli0323/xxl-job.git
三个模块
(1)xxl-job-admin:调度中心
(2)xxl-job-core:核心依赖包,项目需要整合xxljob的时候只需要引入坐标
(3)xxl-job-executor-samples:示例项目
2、生成数据库
source D:\javaProjects\xxl-job\doc\db\tables_xxl_job.sql

(1)xxl_job_group:维护执行器信息
(2)xxl_job_info:维护调度信息
(3)xxl_job_lock:任务调度锁
(4)xxl_job_log:维护调度日志
(5)xxl_job_log_report:维护调度日志报表信息
(6)xxl_job_logglue:任务GLUE日志:用于保存GLUE更新历史,用于支持GLUE的版本回溯功能;
(7)xxl_job_registry:在线的执行器注册表,维护在线的执行器和调度中心机器地址信息
(8)xxl_job_user:保存系统用户信息
在后续启动过程中会逐一介绍各个表和字段的具体作用
3、修改src/main/resources/application.properties文件
(1)端口

(2)数据库ip、端口、用户名、密码

(3)告警邮箱

4、运行XxlJobAdminApplication
环境:Java17+maven2.9.6+MySQL8.0.36

打开url:http://localhost:8080/xxl-job-admin
账号:admin/123456
用户账号信息记录在sql表xxl_job_user中,这条数据是执行sql文件后自动就有的,角色(role)是管理员(1)

登录后页面如下

若要修改密码可在用户管理界面点击编辑按钮进行操作

5、xxl-job-executor-samples
以xxl-job-executor-sample-springboot为例

主要有pom.xml、application.properties(配置文件)、XxlJobExecutorApplication(启动类)、XxlJobConfig.java(xxljob配置类)、SampleXxlJob(bean模式下新建job)
(1)pom.xml需要引用xxl-job-core

(2)application.properties配置执行器
文件:src/main/resources/application.properties

(3)生成XxlJobSpringExecutor
XxlJobConfig类文件:src/main/java/com/xxl/job/executor/core/config/XxlJobConfig.java
XxlJobConfig将读取application.properties中的设置

并根据设置生成XxlJobSpringExecutor

其中,XxlJobExecutor类写在src/main/java/com/xxl/job/core/executor/XxlJobExecutor.java中

(4)新建job任务

(5)新增执行器


名称随便写。因为没有启动代码,所以新增后此时OnLine机器地址为0

此时,sql表xxl_job_group中也出现了一条新数据

(6)启动代码
>>>>>> sql表xxl_job_group <<<<<<
不修改properties文件,直接启动成功后xxl-job-executor-sample的OnLine机器地址不再为0,点击查看可查看ip,即已经注册成功
- sql表xxl_job_group中address_list字段就保存着执行器地址列表,多地址以逗号分隔。查看数据库可发现address_list字段中的ip地址与浏览器的OnLine机器地址相同

- sql表xxl_job_group中app_name字段与执行器编辑页面中的AppName相对应
验证:修改properties文件中的xxl.job.executor.appname,重新启动代码

刷新数据库,可以看到xxl-job-executor-sample的address_list字段为空,而xxl-job-executor- sample2的address_list字段为原来xxl-job-executor-sample的address_list字段内容

执行器管理页面当然也有相应改变

- address_type用于表示执行器地址类型:0=自动注册、1=手动录入。刚刚新增执行器是机器地址一栏没有填写,即为自动注册
- sql表xxl_job_group中title字段与执行器编辑页面中的名称相对应
>>>>>> sql表xxl_job_registry <<<<<<
启动后,如下图所示,表xxl_job_registry会新出现一条数据。如果stop停止运行程序,该条数据会消失。也就是说,表xxl_job_registry只会维护在线的执行器信息

(7)新增/更新任务
JobHandler填写内容与@XxlJob注解内容相同


保存后刷新数据库可看见表xxl_job_info有一条新数据,当中内容就是刚刚新增/更新任务所保存的信息



各字段含义如下图所示
- job_desc:任务描述
- executor_handler:与@XxlJob注解所填内容相同

执行一次后即为执行相应job(这里执行了一次demo和两次demo2)

刷新数据库,表xxl_job_log有一条新数据,记录了此次执行的一些信息

各字段含义如下图所示

参考:(如涉及版权等问题请联系我)
xxl-job详解_xxljob-CSDN博客
工作笔记(五十六)— xxl-job - 知乎
相关文章:
【笔记】分布式任务调度平台XXL-JOB
这篇笔记主要记录以下内容: (1)第一次启动xxl-job的过程 (2)模块、文件、数据库(表和字段)的作用 (3)极少的源码解读(XxlJobConfig) 有点像实…...
PDFMathTranslate,PDF多语言翻译,批量处理,学术论文,双语对照(WIN/MAC)
分享一个非常实用的PDF文档翻译项目——PDFMathTranslate。作为一个经常逛GitHub的开发者,我总喜欢翻看各种项目附带的论文,虽然大多时候是瞎研究,但却乐在其中。该项目能够完美保留公式、图表、目录和注释,对于需要阅读外文文献的…...
zerotier实现内网穿透(访问内网服务器)
moo 内网穿透工具 实用工具:zerotier 目录 内网穿透工具 Windows下zerotier安装 ubuntu系统下的zerotier安装 使用moon加速 Windows下zerotier安装 有了网络之后,会给你一个网络id,这个网络id是非常重要的,其它设备要加入…...
Formality:set_svf命令
相关阅读 Formalityhttps://blog.csdn.net/weixin_45791458/category_12841971.html?spm1001.2014.3001.5482 svf文件的全称是Setup Verification for Formality,即Design Compiler提供给Formality的设置验证文件,它的作用是为Formality的指导模式(Gui…...
IDEA报错:无效的源发行版、无效的目标发行版
1. 无效的源发行版 创建项目的时候,会遇见这个报错,原因就是编译的JDK版本与发布版本不一致。 解决方法: 1.1. 找到问题所在地 英文:File -> Project Structure ->Project Settings 中文:文件->项目结构 …...
#渗透测试#红蓝对抗#SRC漏洞挖掘# Yakit插件使用及编写01
免责声明 本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停…...
Scala中求斐波那契数列的第n项
求斐波那契数列的第n项 问题:求 斐波那契数列的第n项 记: 0 1 1 2 3 5 8 13 21 34 55 ... 从第3项开始 f(n) f(n-1) f(n-2) 1.基本情况(直接能求的):f(0) 0,f(1) 1 2.递归情况(大事化小,自己…...
ORACLE修改序列值为表内某字段(主键)最大值
ORACLE修改序列值为表内某字段(主键)最大值 想修改序列值,网上基本的都是自己看要加到多少,然后要么调步长,要么删了重建。 想直接用declare使用标量然后调,但是逻辑里面不能有DDL语句。 不过最后解决了 直…...
前端html,vue使用第三方地图详细教程,以百度地图为例,实现地图标注,导航,定位,路线规划,坐标转换
目录 示例: 准备: ?编辑 开始: 1、新建页面,在script标签中引入百度地图的api数据,把自己在控制台创建的应用的ak替换上去 2、创建一个dom对象,设置宽高 3、在js中初始化地图 进阶: 1…...
【入门】加密四位数
描述 某军事单位用 4 位整数来传递信息,传递之前要求先对这个 4 位数进行加密。加密的方式是每一位都先加上 5 然后对 10 取余数,再将得到的新数颠倒过来。 例如:原数是 1379 ,那么每位加 5 对 10 取余数的结果为 6824 …...
[游戏开发] Unity中使用FlatBuffer
什么是FlatBuffer 为什么用FloatBuffer,优势在哪? 下图是常规使用的各种数据存储类型的性能对比。 对序列化数据的访问不需要打包和拆包——它将序列化数据存储在缓存中,这些数据既可以存储在文件中,又可以通过网络原样传输&…...
云计算IaaS-PaaS-SaaS三种服务模式转至元数据结尾
在当今数字化时代,云计算已经成为推动企业创新与发展的核心力量。而云计算的模型主要有三种:IAAS、PAAS 和 SAAS,它们各自在云计算的庞大体系中扮演着独特且关键的角色,恰似一座大厦的不同楼层,共同构建起强大而灵活的…...
【数据结构——查找】二叉排序树(头歌实践教学平台习题)【合集】
目录😋 任务描述 相关知识 测试说明 我的通关代码: 测试结果: 任务描述 本关任务:实现二叉排序树的基本算法。 相关知识 为了完成本关任务,你需要掌握:二叉树的创建、查找和删除算法。具体如下: (1)由…...
代码随想录第43天
300.最长递增子序列 # Dynamic programming. class Solution:def lengthOfLIS(self, nums: List[int]) -> int:if not nums: return 0dp [1] * len(nums)for i in range(len(nums)):for j in range(i):if nums[j] < nums[i]: # 如果要求非严格递增,将此行 …...
LeetCode - #158 用 Read4 读取 N 个字符 II
文章目录 摘要描述题目描述方法定义 题解答案题解代码题解代码分析示例测试及结果示例测试代码示例运行结果 时间复杂度空间复杂度总结关于我们 摘要 本文将详细解读一道与文件读取相关的编程问题:如何使用 read4 实现按需读取 n 个字符的 read 方法。我们不仅会提…...
C++(进阶) 第2章 多态
C(进阶) 第2章 多态 文章目录 前言一、多态的概念二、多态的定义及实现1.虚函数2.虚函数的重写3.多态的条件4.多态的细节 三、析构函数的重写四、重载/重写/隐藏的对比五、抽象类抽象类 六、相关题目题目1题目2 七、const修饰八、多态原理九、虚函数放在地方总结 前…...
mac删除程序坞(Dock)中“无法打开的程序“
参考: Mac删除软件之后图标还在怎么办?https://blog.csdn.net/weixin_46500474/article/details/124284161Mac程序坞中软件删除出现残留“?”图标无法删除解决方法: https://blog.csdn.net/shenwenhao1990/article/details/12865…...
【Linux】vi/vim 使用技巧
文章目录 1. 简介vi和vim的历史vi和vim的区别安装vimUbuntu/DebianCentOS/RHELFedoramacOSWindows 2. 基本操作启动和退出启动退出 模式介绍普通模式插入模式命令模式 光标移动基本移动高级移动 3. 文本编辑插入文本删除文本复制和粘贴撤销和重做 4. 搜索与替换基本搜索搜索文本…...
Python自动化办公(系统维护及开发任务状态自动推送)
Python自动化办公, 1.需求分析 系统维护及开发人员的工作一般都会比较繁杂,领导们喜欢实时掌控项目的进度,但是领导们很多时候是不会自己主动去查看及分析项目进度数据的,干活的牛马们也没空整天日报,周报,月报,季报,年报…活又有了,又该想想怎么干,需求的核心是实现自动整理…...
CentOS7 Apache安装踩坑
Gnome桌面右键弹出终端。 [rootlocalhost ~]# yum repolist 已加载插件:fastestmirror, langpacks /var/run/yum.pid 已被锁定,PID 为 2611 的另一个程序正在运行。 Another app is currently holding the yum lock; waiting for it to exit... [root…...
K8S认证|CKS题库+答案| 11. AppArmor
目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作: 1)、切换集群 2)、切换节点 3)、切换到 apparmor 的目录 4)、执行 apparmor 策略模块 5)、修改 pod 文件 6)、…...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...
相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...
多模态大语言模型arxiv论文略读(108)
CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题:CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者:Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...
AI病理诊断七剑下天山,医疗未来触手可及
一、病理诊断困局:刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断",医生需通过显微镜观察组织切片,在细胞迷宫中捕捉癌变信号。某省病理质控报告显示,基层医院误诊率达12%-15%,专家会诊…...
探索Selenium:自动化测试的神奇钥匙
目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...
Python网页自动化Selenium中文文档
1. 安装 1.1. 安装 Selenium Python bindings 提供了一个简单的API,让你使用Selenium WebDriver来编写功能/校验测试。 通过Selenium Python的API,你可以非常直观的使用Selenium WebDriver的所有功能。 Selenium Python bindings 使用非常简洁方便的A…...
人工智能 - 在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型
在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型。这些平台各有侧重,适用场景差异显著。下面我将从核心功能定位、典型应用场景、真实体验痛点、选型决策关键点进行拆解,并提供具体场景下的推荐方案。 一、核心功能定位速览 平台核心定位技术栈亮…...
第八部分:阶段项目 6:构建 React 前端应用
现在,是时候将你学到的 React 基础知识付诸实践,构建一个简单的前端应用来模拟与后端 API 的交互了。在这个阶段,你可以先使用模拟数据,或者如果你的后端 API(阶段项目 5)已经搭建好,可以直接连…...
FOPLP vs CoWoS
以下是 FOPLP(Fan-out panel-level packaging 扇出型面板级封装)与 CoWoS(Chip on Wafer on Substrate)两种先进封装技术的详细对比分析,涵盖技术原理、性能、成本、应用场景及市场趋势等维度: 一、技术原…...
