springboot项目中引入Xxl-Job并部署和使用

news2024/11/18 9:39:37

目录

模块划分

 配置调度中心

配置执行器

 添加执行器

写一个简单的定时任务

XxlJobHelper


xxl-job是分布式任务调度平台,部署为独立的调度服务平台

github地址:xuxueli/xxl-job: A distributed task scheduling framework.(分布式任务调度平台XXL-JOB) (github.com)

 文档地址:分布式任务调度平台XXL-JOB (xuxueli.com)

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

模块划分

在自己项目添加新模块,有利于项目的管理,父工程pom文件中添加:

<!-- 对xxl-job单独做配置的模块  -->
​​<module>jungle-job</module>

<!-- 存放调度中心的模块  -->
<module>jungle-extends</module>

在job模块和extends模块中将父工程指向自己的父工程:

将下载的xxl-job源码中的xxl-job-admin模块拷贝到extends模块下,修改pom文件内容,父工程指向extends

maven导入调度中心模块:

最后模块依赖情况:

 配置调度中心

初始化xxl-job数据库,在mysql数据库中执行sql脚本,调度平台的数据库初始化SQL脚本存放地址:

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

右键数据库连接,执行sql脚本,会创建xxl-job库并导入初始数据,

修改调度中心的数据库配置:

设置执行器注册token:

 

若想把.properties文件内容转成.yml文件内容,可以让GPT去生成。

启动调度中心:

添加services,找到springboot:

配置执行器

自己项目做为一个执行器,在job模块添加以下依赖:

<!-- 你也可以引入你项目的其他模块,来间接引入以下依赖      -->          
                <dependency>
                    <groupId>org.projectlombok</groupId>
                    <artifactId>lombok</artifactId>
                </dependency>
                <dependency>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter</artifactId>
                    <version>2.5.5</version>
                </dependency>

 依然xxl-job核心依赖:

        <!-- xxl-job-core -->
        <dependency>
            <groupId>com.xuxueli</groupId>
            <artifactId>xxl-job-core</artifactId>
        </dependency>

自己项目配置文件中添加自定义配置内容:

#========== xxl-job 自定义配置
xxl.job:
  # 执行器开关
  enabled: true
  # 调度中心地址:如调度中心集群部署存在多个地址则用逗号分隔。
  admin-addresses: http://${custom.dev.ip}:9112/job-admin
  # 执行器通讯TOKEN:非空时启用,需与调度中心配置的一致
  access-token: xxl-job
  executor:
    # 执行器AppName:执行器心跳注册分组依据;为空则关闭自动注册
    appname: xxl-job-executor-${jungle.name}
    # 执行器端口号 执行器从9101开始往后写
    port: 9101
    # [选填]执行器注册:默认IP:PORT
    address: 
    # 选填]执行器IP:默认自动获取IP
    ip: 
    # 执行器运行日志文件存储磁盘路径
    logpath: ./logs/xxl-job
    # 执行器日志文件保存天数:大于3生效
    logretentiondays: 30

如果要指定执行器,可以设置address:http://172.20.5.122:9101

 172.20.5.122为你要指定的执行器ip地址,端口9101往后写

job模块中添加属性配置类XxlJobProperties ,配置类 XxlJobConfig,添加执行器组件配置 XxlJobSpringExecutor

//xxljob配置类
@Data
@ConfigurationProperties(prefix = "xxl.job")
public class XxlJobProperties {

    private Boolean enabled;

    private String adminAddresses;

    private String accessToken;

    private Executor executor;

    @Data
    @NoArgsConstructor
    public static class Executor {

        private String appname;

        private String address;

        private String ip;

        private int port;

        private String logPath;

        private int logRetentionDays;
    }
}
//执行器组件配置
@Slf4j
@Configuration
@EnableConfigurationProperties(XxlJobProperties.class)
@AllArgsConstructor
//当名为 xxl.job.enabled 的属性值为 true 时,才会加载这个配置类
@ConditionalOnProperty(prefix = "xxl.job", name = "enabled", havingValue = "true") 
public class XxlJobConfig {

    private final XxlJobProperties xxlJobProperties;

    @Bean
    public XxlJobSpringExecutor xxlJobExecutor() {
        log.info(">>>>>>>>>>> xxl-job config init.");
        XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
        xxlJobSpringExecutor.setAdminAddresses(xxlJobProperties.getAdminAddresses());
        xxlJobSpringExecutor.setAccessToken(xxlJobProperties.getAccessToken());
        XxlJobProperties.Executor executor = xxlJobProperties.getExecutor();
        xxlJobSpringExecutor.setAppname(executor.getAppname());
        xxlJobSpringExecutor.setAddress(executor.getAddress());
        xxlJobSpringExecutor.setIp(executor.getIp());
        xxlJobSpringExecutor.setPort(executor.getPort());
        xxlJobSpringExecutor.setLogPath(executor.getLogPath());
        xxlJobSpringExecutor.setLogRetentionDays(executor.getLogRetentionDays());
        return xxlJobSpringExecutor;
    }

}

启动自己项目,看到以下日志,表示执行器注册成功

 添加执行器

添加一个执行器,AppName与项目中自己配置的appname相同,执行器名字自己取,注册方式选择自动注册,点击保存

 因为上面配置中ip并没有配置值,所以会自动获取ip,执行器启动后需要一会调度中心便会检测到,点击查看

自带的执行器可以删除了

写一个简单的定时任务

更多示例在.\xxl-job-master\xxl-job-executor-samples\xxl-job-executor-sample-springboot\src\main\java\com\xxl\job\executor\service\jobhandler目录下的SampleXxlJob

添加类:

@Component //交给spring容器管理,让spring能够找到
public class DemoXxlJob {

    @XxlJob("demo_job_handler")
    public void demoJobHandler() {
        //在调度平台查看该日志
        XxlJobHelper.log("XXL-JOB, demo_job_handler 执行.");
        System.out.println("------> demoJobHandler execute success.");
    }

}

新增一个任务,带红色 * 的为必填项,这里我设置一个30s执行一次的任务

 启动任务,也可手动触发一次任务执行(点击执行一次):

 点击查询日志可看到:

XxlJobHelper

 获取配置的任务参数:

String jobParam = XxlJobHelper.getJobParam();

自定义任务成功或失败:

        String jobParam = XxlJobHelper.getJobParam();
        if (jobParam!= null && jobParam.equals("1")){
            XxlJobHelper.handleSuccess("模拟业务成功");
        }else {
            XxlJobHelper.handleFail("模拟业务失败");
        }

 成功:

 失败:

部署至服务器上

        使用Maven对整个项目打包,这样调度中心也会打包成jar包,在target目录下可以查看,可上传至服务器就行部署,也可以打包后使用调度中心模块下的dockerfile进行本地构建。

        本地没有docker环境可以将dockerfile文件和jar包上传至服务器上构建,并修改一下jar包所在目录:

构建镜像:

#xuxueli/xxl-job-admin:v1镜像名和tag标签   ./xxl-job-admin是dockerfile所在目录
docker build -t xuxueli/xxl-job-admin:v1 ./xxl-job-admin

运行xxl-job容器:

sudo docker run --name xxl-job-admin -p 8080:8080 -d xuxueli/xxl-job-admin:v1

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

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

相关文章

ctfshow之_萌新web9至web10

一、访问在线靶场ctfshow 1、web9 如下图所示&#xff0c;进入_萌新赛的web9问题&#xff0c;题目提醒flag在config.php中&#xff1a; 如上图所示&#xff0c;可以get传参&#xff0c;且传入的参数需要正则匹配system、exec、highlight&#xff0c;且不区分大小写&#xff0…

Flink checkpoint 源码分析- Checkpoint snapshot 处理流程

背景 在上一篇博客中我们分析了代码中barrier的是如何流动传递的。Flink checkpoint 源码分析- Checkpoint barrier 传递源码分析-CSDN博客 最后跟踪到了代码org.apache.flink.streaming.runtime.io.checkpointing.CheckpointedInputGate#handleEvent 现在我们接着跟踪相应…

element ui的确认提示框按钮样式修改

修改确认提示框的默认按钮样式&#xff0c;使用css强制修改 例&#xff1a; js代码&#xff1a; deleteUser(params){this.$confirm("您确定要删除吗&#xff1f;此操作无法撤销并且将永久删除所有数据。", "提示", { type: "warning", cancel…

西奥CHT-01软胶囊硬度计:开启硬度测试新纪元,引领制药行业品质升级

西奥CHT-01软胶囊硬度计&#xff1a;开启硬度测试新纪元&#xff0c;引领制药行业品质升级 在追求品质卓越的制药行业中&#xff0c;软胶囊硬度测试是确保药品质量与安全的关键环节。为了满足行业对高精度、高效率硬度测试的需求&#xff0c;西奥科技推出了CHT-01软胶囊硬度计…

【XR806开发板试用】使用FDCM操作Flash记录开机次数

一、寻找系统分配的自定义用户数据地址 &#xff08;1&#xff09;XR806的Flash布局 如图1所示&#xff0c;FLASH的布局有两种&#xff1a; 1、没有开启OTA模式&#xff1b;Image1PaddingSysinfo 2、开启OTA模式&#xff1b;Image1PaddingSysinfoOTA area Image2 Padding 如图…

一维数组 和 关键字 sizeof

数组的概念 “ 数组 ”我们可以理解成一组相同类型元素的集合 &#xff08;1&#xff09;其中可以是单个或是多个元素&#xff0c;可以是0&#xff0c;但元素个数不能为0 &#xff08;2&#xff09;一个数组中存放的元素必须是同类型的&#xff0c;比如一组整型&#xff0c;…

ruoyi-nbcio 基于flowable规则的多重并发网关的任意跳转

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 演示地址&#xff1a;RuoYi-Nbcio后台管理系统 http://218.75.87.38:9666/ 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码&#xff1a; h…

【密评】 | 商用密码应用安全性评估从业人员考核题库(6/58)

根据Kerckhoffs原则&#xff0c;密码系统的安全性主要依赖于&#xff08;&#xff09;。 A. 密钥 B. 加密算法 C. 解密算法 D. 通信双方 2000年10月&#xff0c;美国NIST宣布&#xff08;&#xff09;算法作为新的高级加密标准AES。 A. Rijndael B. RC6 C. SERPENT D. Twofish…

去除快捷方式的箭头图标

文章目录 取消箭头显示恢复箭头显示结果展示 添加快捷方式之后&#xff0c;会有箭头图标&#xff0c;部分场景下看着较为难受&#xff1a; 可以通过如下方式取消/显示箭头&#xff1a; 取消箭头显示 新建一个.bat文件&#xff0c;内部加入如下命令&#xff1a; reg add "…

Python-VBA函数之旅-reversed函数

目录 一、reversed函数的常见应用场景 二、reversed函数使用注意事项 三、如何用好reversed函数&#xff1f; 1、reversed函数&#xff1a; 1-1、Python&#xff1a; 1-2、VBA&#xff1a; 2、推荐阅读&#xff1a; 个人主页&#xff1a; https://blog.csdn.net/ygb_10…

Day2 | Java基础 | 2 数据类型

Day1 | Java基础 | 2 数据类型 基础版staticstatic的用法static修饰内部类static修饰方法static修饰变量static修饰代码块 深入分析static小结 问题回答版参数传递形参和实参的区别是什么&#xff1f;Java是值传递还是引用传递&#xff1f;值传递和引用传递的区别是什么&#x…

计算机发展史故事【6】

电脑群英谱 本世纪三、四十年代&#xff0c;是计算机发展史里最重大的收获季节。群英荟萃&#xff0c;逐鹿中原&#xff0c;鹿究竟死于谁手&#xff0c;并不是没有争议的。除了马克1 号与埃历阿克&#xff0c;还有一大批科学家为计算机的诞生作出过巨大的贡献&#xff0c;他们…

怎么做知识付费课程呢_揭秘知识付费课程系统的搭建之路

在信息爆炸的时代&#xff0c;知识的价值日益凸显。而知识付费&#xff0c;作为一种新型的学习方式&#xff0c;正逐渐走进大众的生活。那么&#xff0c;你是否想过自己也能搭建一套知识付费课程系统&#xff0c;分享你的智慧&#xff0c;实现知识的价值最大化呢&#xff1f;接…

2024年学浪视频怎么录屏

由于学浪最新版PC学生版客户端已经有防止录屏&#xff0c;而且录屏效率太慢&#xff0c;本文将介绍你一种高效率的工具&#xff0c;小浪助手.exe&#xff0c;它可以很轻松的将你的学浪视频下载下来 学浪下载工具我已经打包好了&#xff0c;有需要的自己下载一下 注意&#xf…

C++:多态-虚函数

C 中的多态性是面向对象编程中的一个重要概念&#xff0c;它允许在运行时选择不同的函数实现&#xff0c;以适应不同类型的对象。 多态的种类 编译时多态性&#xff08;Compile-time Polymorphism&#xff09;&#xff1a;也称为静态多态性或早期绑定&#xff0c;指在编译时确…

容联云孔淼:大模型落地与全域营销中台建设

近日&#xff0c;由金科创新社主办的2024区域性商业银行数智化转型研讨会顺利召开&#xff0c; 容联云产业数字云事业群副总经理、诸葛智能创始人孔淼受邀出席&#xff0c;并分享数智化转型实践经验。 他分享了容联云两大核心产品&#xff0c;“大模型应用容犀Copilot”在金融营…

SpringBoot Actuator未授权访问漏洞的解决方法

1. 介绍 Spring Boot Actuator 是一个用于监控和管理 Spring Boot 应用程序的功能模块。它提供了一系列生产就绪的功能&#xff0c;帮助你了解应用程序的运行状况&#xff0c;以及在运行时对应用程序进行调整。Actuator 使用了 Spring MVC 来暴露各种 HTTP 或 JMX 端点&#x…

嘴尚绝卤味:传承经典,缔造美食新风尚

卤味&#xff0c;作为中国传统美食的代表之一&#xff0c;历经千年的传承与发展&#xff0c;早已成为无数食客餐桌上的宠儿。而在这个美食盛行的时代&#xff0c;嘴尚绝卤味凭借其独特的口感和精湛的工艺&#xff0c;成为卤味市场中的佼佼者&#xff0c;引领着卤味文化的新潮流…

Linux(openEuler、CentOS8)常用的IP修改方式(文本配置工具nmtui+配置文件+nmcli命令)

----本实验环境为openEuler系统<以server方式安装>&#xff08;CentOS类似&#xff0c;可参考本文&#xff09;---- 一、知识点 &#xff08;一&#xff09;文本配置工具nmtui(openEuler已预装) nmtui&#xff08;NetworkManager Text User Interface&#xff09;是一…

【系统架构师】-案例篇-UML用例图

1、概述 用于表示系统功能需求&#xff0c;以及应用程序与用户或者与其他应用程序之间的交互关系。 2、组成 参与者&#xff08;Actors&#xff09;&#xff1a;与系统交互的用户或其他系统。用一个人形图标表示。用例&#xff08;Use Cases&#xff09;&#xff1a;系统需要…