xxl-job的简单使用

xxl-job是一个分布式任务调度框架,在Spring中,提供有任务调度的注解功能,在之前的项目中,非分布式任务都可以直接使用Spring框架提供的@Scheduled注解和@EnableScheduling注解来实现定时任务。

@EnableScheduling注解加载项目启动类上面
@Scheduled注解加在需要进行定时执行的方法上面,且需要使用cron表达式设置执行时机

而之所以使用xxl-job来进行任务调度,主要有下面几个原因:

1、高可用:单机版的定式任务调度只能在一台机器上运行,如果程序或者系统出现异常就会导致功能不可用。
------
2、防止重复执行: 在单机模式下,定时任务是没什么问题的。但当我们部署了多台服务,同时又每台服务又有定时任务时,若不进行合理的控制在同一时间,只有一个定时任务启动执行,这时,定时执行的结果就可能存在混乱和错误了
------
3、单机处理极限:原本1分钟内需要处理1万个订单,但是现在需要1分钟内处理10万个订单;原来一个统计需要1小时,现在业务方需要10分钟就统计出来。你也许会说,你也可以多线程、单机多进程处理。的确,多线程并行处理可以提高单位时间的处理效率,但是单机能力毕竟有限(主要是CPU、内存和磁盘),始终会有单机处理不过来的情况。
----

xxl-job的源码下载地址:

https://github.com/xuxueli/xxl-job

https://gitee.com/xuxueli0323/xxl-job
在这里插入图片描述
将xxl-job的源码下载完成后,需要在电脑上进行启动

1、需要先创建xxl-job的数据库,在 doc/db 文件夹下存在一个tables_xxl_job.sql文件,执行该文件即可创建xxl-job执行所需的数据库表。
在这里插入图片描述
在这里插入图片描述
2、使用maven项目打开xxl-job-master项目
在这里插入图片描述
3、修改xxl-job-admin模块中的properties配置文件中的数据库连接信息为自己的。配置文件中的红色波浪线不用去管,没有影响。

在这里插入图片描述
4、通过XxlJobAdminApplication启动类将xxl-job项目启动,项目的端口号可以在properties配置文件中进行修改,默认是8080,访问http://localhost:8080/xxl-job-admin任务调度中心
在这里插入图片描述
在这里插入图片描述
5、启动xxl-job项目后要想使用它,还需要在项目中引入xxl-job的相关依赖,以及需要配置相关信息。

<!-- 添加xxl-job依赖 -->
<dependency><groupId>com.xuxueli</groupId><artifactId>xxl-job-core</artifactId><version>2.3.1</version>
</dependency>

6、在yml文件中添加xxl-job所需要的相关配置信息

xxl:job:### 执行器通讯TOKEN [选填]:非空时启用;accessToken: default_tokenexecutor:### 执行器AppName [选填]:执行器心跳注册分组依据;为空则关闭自动注册appname: xxl-job-executor-sample### 执行器注册 [选填]:优先使用该配置作为注册地址,为空时使用内嵌服务 ”IP:PORT“ 作为注册地址。从而更灵活的支持容器类型执行器动态IP和动态映射端口问题。address:### 执行器IP [选填]:默认为空表示自动获取IP,多网卡时可手动设置指定IP,该IP不会绑定Host仅作为通讯实用;地址信息用于 "执行器注册" 和 "调度中心请求并触发任务";ip: 127.0.0.1### 执行器端口号 [选填]:小于等于0则自动获取;默认端口为9999,单机部署多个执行器时,注意要配置不同执行器端口;port: 9999### 执行器运行日志文件存储磁盘路径 [选填] :需要对该路径拥有读写权限;为空则使用默认路径;logpath: /data/applogs/xxl-job/jobhandler### 执行器日志文件保存天数 [选填] : 过期日志自动清理, 限制值大于等于3时生效; 否则, 如-1, 关闭自动清理功能;logretentiondays: 30admin:### 调度中心部署根地址 [选填]:如调度中心集群部署存在多个地址则用逗号分隔。执行器将会使用该地址进行"执行器心跳注册"和"任务结果回调";为空则关闭自动注册;addresses: http://127.0.0.1:8090/xxl-job-admin

7、添加xxl-job配置类

@Configuration
public class XxlJobConfig {@Value("${xxl.job.admin.addresses}")private String adminAddresses;@Value("${xxl.job.accessToken}")private String accessToken;@Value("${xxl.job.executor.appname}")private String appname;@Value("${xxl.job.executor.address}")private String address;@Value("${xxl.job.executor.ip}")private String ip;@Value("${xxl.job.executor.port}")private int port;@Value("${xxl.job.executor.logpath}")private String logPath;@Value("${xxl.job.executor.logretentiondays}")private int logRetentionDays;@Beanpublic XxlJobSpringExecutor xxlJobExecutor() {XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();xxlJobSpringExecutor.setAdminAddresses(adminAddresses);xxlJobSpringExecutor.setAppname(appname);xxlJobSpringExecutor.setAddress(address);xxlJobSpringExecutor.setIp(ip);xxlJobSpringExecutor.setPort(port);xxlJobSpringExecutor.setAccessToken(accessToken);xxlJobSpringExecutor.setLogPath(logPath);xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);return xxlJobSpringExecutor;}
}

8、在需要进行定时执行的方法上面添加@XxlJob注解,并设置JobHandler,其中JobHandler就是该方法的唯一标识
9、完成上述操作后,需要到任务调度中心进行配置

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

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

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

相关文章

MySQL数据库基础 18

第18章_MySQL8其它新特性 1. MySQL8新特性概述1.1 MySQL8.0 新增特性1.2 MySQL8.0移除的旧特性 2. 新特性1&#xff1a;窗口函数2.1 使用窗口函数前后对比2.2 窗口函数分类2.3 语法结构2.4 分类讲解1. 序号函数2. 分布函数3. 前后函数4. 首尾函数5. 其他函数 2.5 小 结 3. 新特…

录音怎么转换成mp3格式?

录音怎么转换成mp3格式&#xff1f;将录音转换成MP3格式可以节省存储空间。通常&#xff0c;录音保存的文件格式是WAV等无损音频格式&#xff0c;这种音频格式相对于MP3格式占用的存储空间更大。将录音转换成MP3格式后&#xff0c;可以减小文件的大小&#xff0c;方便储存和传输…

cpuset.cpus.effective: no such file or directory (修改 docker cgroup 版本的方法)

要切换使用 v1 版 cgroup&#xff0c;需要做如下配置&#xff1a; vim /etc/default/grubGRUB_CMDLINE_LINUX"systemd.unified_cgroup_hierarchy0"update-grubreboot完美解决

119、仿真-51单片机温湿度光照强度LCD 1602显示报警设计(Proteus仿真+程序+元器件清单等)

方案选择 单片机的选择 方案一&#xff1a;AT89C52是美国ATMEL公司生产的低电压&#xff0c;高性能CMOS型8位单片机&#xff0c;器件采用ATMEL公司的高密度、非易失性存储技术生产&#xff0c;兼容标准MCS-51指令系统&#xff0c;片内置通用8位中央处理器(CPU)和Flash存储单元…

HTML input text 常用事件

前言 用于记录开发中常用到的&#xff0c;快捷开发 简单实例 <input type"text" name"noSecretKeyJson" maxlength"200" />常用事件 oninput &#xff08;在用户输入时触发&#xff09;及案例 案例一&#xff1a;限制只允许输入数字…

windows nodejs 版本切换

一、按健winR弹出窗口&#xff0c;键盘输入cmd,然后敲回车。然后进入命令控制行窗口&#xff0c;并输入where node查看之前本地安装的node的路径。 二、找到上面找到的路径&#xff0c;将node.exe所在的父目录里面的所有东西都删除。 三、从官网下载安装包 https://github.com/…

【技能实训】DMS数据挖掘项目-Day10

文章目录 任务10【任务10.1.1】安装Mysql数据库&#xff0c;创建项目所需的数据库dms_学号、表及用户名、密码等&#xff0c;并搭建数据访问的基础环境(JDBC)【任务10.1.2】加载JDBC包【任务10.1.3】编写mysql.properties文件【任务10.1.4】编写Config类【任务10.2】编写访问数…

源码阅读: echo 回显程序

文章目录 1. 目的2. 原始代码3. 化简和跨平台支持4. 修改后代码的代码分析5. References 1. 目的 阅读 netbsd 9.3 的 echo.c, 练习 C 语言源码阅读的技能。 2. 原始代码 https://github.com/NetBSD/src/blob/trunk/bin/echo/echo.c /* $NetBSD: echo.c,v 1.23 2021/11/16 …

第G1周:生成对抗网络(GAN)入门

目录 一、课题背景和开发环境二、理论基础1.生成器2. 判别器3. 基本原理 三、前期准备工作1. 定义超参数2.下载数据3. 配置数据 四、定义模型1. 定义鉴别器2. 定义生成器 五、训练模型1. 创建实例2. 训练模型3. 保存模型 &#x1f368; 本文为&#x1f517;365天深度学习训练营…

举例说明什么是基于线性回归的单层神经网络

基于线性回归的单层神经网络是一种简单的神经网络&#xff0c;通常用于解决回归问题。这种神经网络只包含一个输入层和一个输出层&#xff0c;没有隐藏层。我们可以通过求解权重和偏置项来拟合输入和输出之间的线性关系。 例如&#xff0c;给定一个数据集&#xff0c;其中包含了…

面试题更新之-使用 base64 编码的优缺点

文章目录 base64 编码是什么&#xff1f;使用 base64 编码的优缺点 base64 编码是什么&#xff1f; Base64编码是一种将二进制数据转换为ASCII字符的编码方式。它将三个字节的二进制数据分割成四组&#xff0c;每组6个比特&#xff0c;然后将这些6个比特转换为可打印的ASCII字…

使用Hugging Face预训练Bert处理下游任务显存占用过多

在使用HuggingFace的transformer下的BertForMaskedLM进行预训练语言模型的load时&#xff0c;bert会占用很大的显存。 这里可以考虑使用TinyBERT&#xff0c;速度和显存上都能得到很大的优化。 具体的方法进入https://huggingface.co/huawei-noah/TinyBERT_General_4L_312D/tr…