xxl-job--01--简介

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 1.xxl-job
    • 1. 1 发展历史
    • 1.2 XXL-JOB的系统架构
    • 1.3 xxl-job与其他框架对比
  • 2. XXL-JOB的使用
    • 2.1 准备工作- 配置调度中心
        • XXL-JOB的数据表
    • 2.2 配置执行器
      • 1 引入依赖包:
      • 2 配置配置项
      • 3 创建XxlJobConfig.java
    • 2.3 配置可视化界面
      • 1. 配置数据库路径以及其他信息
      • 2. 配置登陆账号密码
      • 3. 启动项目:XxlJobAdminApplication.java
      • 4. 登陆可视化界面 地址: http://10.4.7.214:8080/xxl-job-admin/jobinfo
    • 2.4 开发第一个任务 Hello,world
      • 1.首先在配置好了执行器的微服务下创建定时任务代码:
      • 2.依次启动微服务项目(Eureka,config…等)
      • 3.启动调度中心: XxlJobAdminApplication.java
      • 4.登录调度中心,输入账号密码,然后配置执行器
      • 5.进入==任务管理==页面
      • 6.点击新增任务,配置对应相关参数
      • 7.返回任务管理页面
      • 8.如果点击执行任务,则会只执行一次
      • 9.如果点击日志,则跳转至调度日志页面
      • 10.如果点击启动,则直接==启动定时任务(按照Corn表达式定时执行任务==),并且启动按钮会变成停止按钮
      • 11.如果点击编辑,则进入定时任务的更新页面
    • 2.5 运行报表


1.xxl-job

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

1. 1 发展历史

在这里插入图片描述

源码地址: https://github.com/xuxueli/xxl-job
中文文档:https://www.xuxueli.com/xxl-job/

在这里插入图片描述

1.2 XXL-JOB的系统架构

  • ​ xxl-job框架主要用于处理分布式的定时任务,其主要由调度中心和执行器组成。
    在这里插入图片描述

调度模块(调度中心):

  • 负责管理调度信息,按照调度配置发出调度请求,自身不承担业务代码。调度系统与任务解耦,提高了系统可用性和稳定性,同时调度系统性能不再受限于任务模块;
  • 支持可视化、简单且动态的管理调度信息,包括任务新建,更新,删除,GLUE开发和任务报警等,所有上述操作都会实时生效,同时支持监控调度结果以及执行日志,支持执行器Failover。

执行模块(执行器):

  • 负责接收调度请求并执行任务逻辑。任务模块专注于任务的执行等操作,开发和维护更加简单和高效;
  • 接收“调度中心”的执行请求、终止请求和日志请求等。

调度中心和执行器两个模块分开部署,相互分离,两者之间通过RPC进行通信,其中调度中心主要是提供一个平台,管理调度信息,发送调度请求,自己不承担业务代码,而执行器接受调度中心的调度执行业务逻辑。
在这里插入图片描述

1.3 xxl-job与其他框架对比

分布式定时任务调度的框架:quartz、elastic-job、xxl-job

在这里插入图片描述
在这里插入图片描述

2. XXL-JOB的使用

2.1 准备工作- 配置调度中心

下载官方源码

  • 将项目中 /xxl-job/doc/db/ 目录下的 tables_xxl_job.sql 的数据库表导入数据库
XXL-JOB的数据表

在这里插入图片描述

在这里插入图片描述

2.2 配置执行器

1 引入依赖包:

     <!-- xxl-job-core --><dependency><groupId>com.cdmtc</groupId><artifactId>xxl-job-core</artifactId><version>2.0.2</version></dependency>

2 配置配置项

在这里插入图片描述
XXL-JOB执行器的相关配置项的意义,如下所示:

  • xxl.job.admin.addresses
    调度中心的部署地址。若调度中心采用集群部署,存在多个地址,则用逗号分隔。执行器将会使用该地址进行”执行器心跳注册”和”任务结果回调”。

  • xxl.job.executor.appname
    执行器的应用名称,它是执行器心跳注册的分组依据。

  • xxl.job.executor.ip
    执行器的IP地址,用于”调度中心请求并触发任务”和”执行器注册”。执行器IP默认为空,表示自动获取IP。多网卡时可手动设置指定IP,手动设置IP时将会绑定Host。

  • xxl.job.executor.port
    执行器的端口号,默认值为9999。单机部署多个执行器时,注意要配置不同的执行器端口。

  • xxl.job.accessToken
    执行器的通信令牌,非空时启用。

  • xxl.job.executor.logpath
    执行器输出的日志文件的存储路径,需要拥有该路径的读写权限。

  • xxl.job.executor.logretentiondays
    执行器日志文件的定期清理功能,指定日志保存天数,日志文件过期自动删除。限制至少保存3天,否则功能不生效。

3 创建XxlJobConfig.java

package com.cdmtc.config;import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;/*** xxl-job config** @author xuxueli 2017-04-28*/
@Configuration
public class XxlJobConfig {private Logger logger = LoggerFactory.getLogger(XxlJobConfig.class);@Value("${record.xxl.job.admin.addresses}")private String adminAddresses;@Value("${record.xxl.job.executor.appname}")private String appName;@Value("${record.xxl.job.executor.ip}")private String ip;@Value("${record.xxl.job.executor.port}")private int port;@Value("${record.xxl.job.accessToken}")private String accessToken;@Value("${record.xxl.job.executor.logpath}")private String logPath;@Value("${record.xxl.job.executor.logretentiondays}")private int logRetentionDays;@Bean(initMethod = "start", destroyMethod = "destroy")public XxlJobSpringExecutor xxlJobExecutor() {logger.info(">>>>>>>>>>> xxl-job config init.");XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();xxlJobSpringExecutor.setAdminAddresses(adminAddresses);xxlJobSpringExecutor.setAppName(appName);xxlJobSpringExecutor.setIp(ip);xxlJobSpringExecutor.setPort(port);xxlJobSpringExecutor.setAccessToken(accessToken);xxlJobSpringExecutor.setLogPath(logPath);xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);return xxlJobSpringExecutor;}/*** 针对多网卡、容器内部署等情况,可借助 "spring-cloud-commons" 提供的 "InetUtils" 组件灵活定制注册IP;**      1、引入依赖:*          <dependency>*             <groupId>org.springframework.cloud</groupId>*             <artifactId>spring-cloud-commons</artifactId>*             <version>${version}</version>*         </dependency>**      2、配置文件,或者容器启动变量*          spring.cloud.inetutils.preferred-networks: 'xxx.xxx.xxx.'**      3、获取IP*          String ip_ = inetUtils.findFirstNonLoopbackHostInfo().getIpAddress();*/}

XxlJobConfig配置类有两点需要注意:

  1. 组件扫描
    第2行使用@ComponentScan注解,扫描com.example.demo.jobhandler包,将其中的任务处理器加载至Spring容器。
  2. 获取执行器实例
    第29行的xxlJobExecutor()方法会实例化一个XXL-JOB执行器对象,执行器初始化时调用它的start()方法

2.3 配置可视化界面

1. 配置数据库路径以及其他信息

在这里插入图片描述

2. 配置登陆账号密码

  • 可修改为其他账号密码

在这里插入图片描述

3. 启动项目:XxlJobAdminApplication.java

4. 登陆可视化界面 地址: http://10.4.7.214:8080/xxl-job-admin/jobinfo

  • 【可先等配置好了执行器再进行登陆,端口可自行配置或修改,默认是8080,这里演示的端口号为8888】
    在这里插入图片描述

2.4 开发第一个任务 Hello,world

1.首先在配置好了执行器的微服务下创建定时任务代码:

在这里插入图片描述

2.依次启动微服务项目(Eureka,config…等)

3.启动调度中心: XxlJobAdminApplication.java

4.登录调度中心,输入账号密码,然后配置执行器

在这里插入图片描述
在这里插入图片描述

5.进入任务管理页面

在这里插入图片描述

6.点击新增任务,配置对应相关参数

在这里插入图片描述

7.返回任务管理页面

在这里插入图片描述

8.如果点击执行任务,则会只执行一次

在这里插入图片描述

9.如果点击日志,则跳转至调度日志页面

在这里插入图片描述

10.如果点击启动,则直接启动定时任务(按照Corn表达式定时执行任务),并且启动按钮会变成停止按钮

在这里插入图片描述

  • 如果没有点击停止按钮的话,则会一直是启动状态,如果点击了停止按钮,则定时任务停止,Corn表达式不再生效;

11.如果点击编辑,则进入定时任务的更新页面

在这里插入图片描述

  • 如果点击删除,则直接删除此定时任务配置;

  • 如果点击执行器,则展示该执行器下的对应定时任务。

  • 任务描述和JobHandler则为搜索条件,对定时任务配置进行搜索;

2.5 运行报表

  • 可视化直观展示定时任务运行情况
  • 图示如下:
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/715418.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue cesium加载点与定位到指定位置

vue cesium定位到指定位置 window.viewer.camera.flyTo({destination: Cesium.Cartesian3.fromDegrees(point.longDeg, point.latDeg, 6500000), orientation: {heading: 6.2079384332084935, roll: 0.00031509431759868534, pitch: -1.535}, duration: 3})vue cesium加载点 …

为什么HashMap的键值可以为null,而ConcurrentHashMap不行?

写在开头 今天在写《HashMap很美好&#xff0c;但线程不安全怎么办&#xff1f;ConcurrentHashMap告诉你答案&#xff01;》这篇文章的时候&#xff0c;漏了一个知识点&#xff0c;知道晚上吃饭的时候才凸显想到&#xff0c;关于ConcurrentHashMap在存储Key与Value的时候&…

【Java】面向对象之多态超级详解!!

文章目录 前言一、多态1.1 多态的概念1.2 多态的实现条件1.3 重写1.3.1方法重写的规则1.3.2重写和重载的区别 1.4 向上转型和向下转型1.4.1向上转型1.4.2向下转型 1.5 多态的优缺点1.5.1 使用多态的好处1.5.2 使用多态的缺陷 结语 前言 为了深入了解JAVA的面向对象的特性&…

基于yolov5的电瓶车和自行车检测系统,可进行图像目标检测,也可进行视屏和摄像检测(pytorch框架)【python源码+UI界面+功能源码详解】

功能演示&#xff1a; 基于yolov5的电瓶车和自行车检测系统_哔哩哔哩_bilibili &#xff08;一&#xff09;简介 基于yolov5的电瓶车和自行车检测系统是在pytorch框架下实现的&#xff0c;这是一个完整的项目&#xff0c;包括代码&#xff0c;数据集&#xff0c;训练好的模型…

Unity(第二十一部)动画的基础了解(感觉不了解其实也行)

1、动画组件老的是Animations 动画视频Play Automatically 是否自动播放Animate Physics 驱动方式&#xff0c;勾选后是物理驱动Culling Type 剔除方式 默认总是动画化就会一直执行下去&#xff0c;第二个是基于渲染播放&#xff08;离开镜头后不执行&#xff09;&#xff0c; …

MySQL中json类型的字段

有些很复杂的信息&#xff0c;我们一般会用扩展字段传一个json串&#xff0c;字段一般用text类型存在数据库。mysql5.7以后支持json类型的字段&#xff0c;还可以进行sql查询与修改json内的某个字段的能力。 1.json字段定义 ip_info json DEFAULT NULL COMMENT ip信息, 2.按…

Doris实战——拈花云科的数据中台实践

目录 前言 一、业务背景 二、数据中台1.0—Lambda 三、新架构的设计目标 四、数据中台2.0—Apache Doris 4.1 新架构数据流转 4.2 新架构收益 五、新架构的落地实践 5.1 模型选择 5.1.1 Unique模型 5.1.2 Aggregate模型 5.2 资源管理 5.3 批量建表 5.4 计算实现…

Stable Diffusion 模型分享:Realistic Stock Photo(真实的库存照片)

本文收录于《AI绘画从入门到精通》专栏&#xff0c;专栏总目录&#xff1a;点这里。 文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八 下载地址 模型介绍 条目内容类型大模型基础模型SDXL 1.0来源CIVITAI作者PromptSharingSamaritan文件名称reali…

Vue3_2024_1天【Vue3创建和响应式,对比Vue2】

前言&#xff1a; Vue3对比Vue2版本&#xff0c;它在性能、功能、易用性和可维护性方面都有显著的提升和改进。 性能优化&#xff1a;模板编译器的优化、对Proxy的支持以及使用了更加高效的Virtual DOM算法等。这使得Vue3的打包大小减少了41%&#xff0c;初次渲染提速55%&#…

【MATLAB源码-第153期】基于matlab的OFDM系统插入导频和训练符号两种信道估计方式误码率对比仿真。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 OFDM&#xff08;Orthogonal Frequency Division Multiplexing&#xff0c;正交频分复用&#xff09;是一种高效的无线信号传输技术&#xff0c;广泛应用于现代通信系统&#xff0c;如Wi-Fi、LTE和5G。OFDM通过将宽带信道划分…

使用docker方式测试部署django项目(客户催)

需求 1&#xff1a;已有django项目–weidanyewu 2&#xff1a;希望在服务器上测试部署–客户催 3&#xff1a;没完善django的启动 4&#xff1a;使用临时数据库进行演示 5&#xff1a;使用python3.10版本镜像 6&#xff1a;展示端口80 7&#xff1a;后台执行django程序 8&#…

【C语言】熟悉文件顺序读写函数

前言 本篇详细介绍了 文件顺序读写常用函数&#xff0c;快来看看吧~ 欢迎关注个人主页&#xff1a;逸狼 创造不易&#xff0c;可以点点赞吗~ 如有错误&#xff0c;欢迎指出~ 目录 前言 ​编辑 文件顺序读写函数 fgetc函数 示例 fputc函数 逐个字符写入 写入26个字母 文…

手写模拟器,解放双手!效果炸裂的生产工具

手写模拟器是一款基于Handright的仿手写图片生成软件&#xff0c;可以让你的电脑和手机也能写出漂亮的手写字&#xff0c;你只需要输入你想要写的内容&#xff0c;选择你喜欢的字体和背景&#xff0c;就可以生成一张高仿真的手写图片&#xff0c;用于各种场合&#xff0c;比如做…

代码随想录三刷 day11 | 栈与队列之 20. 有效的括号 1047. 删除字符串中的所有相邻重复项 150. 逆波兰表达式求值

三刷day11 20. 有效的括号1047. 删除字符串中的所有相邻重复项150. 逆波兰表达式求值 20. 有效的括号 题目链接 解题思路&#xff1a; 有三种不匹配的情况&#xff1a; 第一种情况&#xff0c;字符串里左方向的括号多余了 。 第二种情况&#xff0c;括号没有多余&#xff0c;…

[伴学笔记]01-操作系统概述 [南京大学2024操作系统]

文章目录 前言jyy:01-操作系统概述 [南京大学2024操作系统]为什么要学操作系统?学习操作系统能得到什么? 什么是操作系统?想要明白什么是操作系统:时间线:1940s1950s-1960s1960-1970s年代. 信息来源: 前言 督促自己,同时分享所得,阅读完本篇大约需要10分钟,希望为朋友的技术…

编码规则转换

思考&#xff1a; 如何将一个机内码转换为区内码&#xff1f; 只要将机内码减去 A0A0 就可以啦 如果只让我们用加法器来解决呢&#xff1f; 注意我们的数据占用了 32 位&#xff0c;如果想用补码进行减法运算的话&#xff0c;符号位怎么办&#xff1f;&#xff1f;&#xf…

【深度学习笔记】计算机视觉——微调

微调 前面的一些章节介绍了如何在只有6万张图像的Fashion-MNIST训练数据集上训练模型。 我们还描述了学术界当下使用最广泛的大规模图像数据集ImageNet&#xff0c;它有超过1000万的图像和1000类的物体。 然而&#xff0c;我们平常接触到的数据集的规模通常在这两者之间。 假…

【计算机是怎么跑起来的】软件,体验一次手工汇编

【计算机是怎么跑起来的】软件,体验一次手工汇编 二进制机器语言汇编语言操作码操作数寄存器内存地址和I/O地址参考书:计算机是怎么跑起来的 第三章外设在路上。。。先整理一下本书涉及的理论知识,反正后面做视频也要重写QAQ 程序的作用是驱动硬件工作,所以在编写程序之前必…

【C++庖丁解牛】类与对象

&#x1f4d9; 作者简介 &#xff1a;RO-BERRY &#x1f4d7; 学习方向&#xff1a;致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 &#x1f4d2; 日后方向 : 偏向于CPP开发以及大数据方向&#xff0c;欢迎各位关注&#xff0c;谢谢各位的支持 目录 1.面向过程和面向对象…

环形链表详解(让你彻底理解环形链表)

文章目录 一.什么是环形链表&#xff1f;二.环形链表的例题&#xff08;力扣&#xff09; 三.环形链表的延伸问题 补充 一.什么是环形链表&#xff1f; 环形链表是一种特殊类型的链表数据结构&#xff0c;其最后一个节点的"下一个"指针指向链表中的某个节点&#xff…