前言:上一节中我们简单的介绍了什么是SpringCloud Bus,SpringCloud Bus的用处,而本节内容则是使用SpringCloud Bus来实现动态刷新全局广播。

实现动态刷新全局广播的设计思想的架构图

注:在实现SpringCloud Bus动态刷新全局广播前需要电脑具备RabbitMQ环境,没有具备的需要先行安装

1、启动RabbitMQ

效果图:

2、查看RabbitMQ是否正常运行

在浏览器输入http://localhost:15672/进入RabbitMQ的可视化界面,然后登录进去(默认账号密码guest/guest)

效果图:

3、创建一个客户端模块,命名为cloud-config-client-3366
(1)在父工程下新建模块

 (2)选择模块的项目类型为Maven并选择模块要使用的JDK版本
(3)填写子模块的名称,然后点完成即可完成创建

效果图:

(4)修改cloud-config-client-3355子模块的pom.xml文件,然后reolad一下,下载依赖

例:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>springcloud01</artifactId><groupId>com.ken.springcloud</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>cloud-config-client-3366</artifactId><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-config</artifactId></dependency><!--以下依赖都没写版本号,没写版本号的情况下会引用父项目的版本--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--监控--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><!--热部署--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></dependency><!--lombok插件--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!--Eureka Clinet--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency></dependencies></project>
(5)为子模块添加名为bootstrap的yml配置文件

注:application.yml是用户级资源配置项,bootstrap.yml是系统级,bootstrap.yml优先级更高,Spring Cloud会创建一个BootstrapContext,作为Spring应用的Application Context的父上下文。初始化的时候,BootstrapContext负责从外部源加载配置属性并解析配置。这两个上下文共享一个从外部获取的Environment。Bootstrap属性有高优先级,默认情况下,它们不会被本地配置覆盖。Bootstrap context和Application Context有着不同的约定,所以新增了一个bootstrap.yml文件,保证`Bootstrap Context和Application Context配置的分离。要将Client模块下的application.yml文件改为bootstrap.yml,这是很关键的,因为bootstrap.yml是比application.yml先加载的。bootstrap.yml优先级高于application.yml

效果图:

(6)修改bootstrap.yml文件配置
server:port: 3366spring:application:name: config-clientcloud:#config客户端配置(下述4个配置综合起来,意思是读取http://localhost:3344地址里的master分支里的config-dev.ymL配置文件,即读取http://config-3344.com:3344/master/config-dev.ymlconfig:#分支名称label: master#配置文件名称name: config#读取后缀名称profile: dev#配置中心地址uri: http://localhost:3344#服务注册到eureka地址
eureka:client:service-url:defaultZone: http://eureka7001.com:7001/eureka/#暴露监控的端口
management:endpoints:web:exposure:include: "*"
(7)为cloud-config-client-3366子模块新建一个主启动类,类名输入com.ken.springcloud.ConfigClientMain3366,然后创建即可

效果图:

(8)编写ConfigClientMain3366主启动类
package com.ken.springcloud;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;@EnableEurekaClient
@SpringBootApplication
public class ConfigClientMain3366 {public static void main(String[] args) {SpringApplication.run(ConfigClientMain3366.class, args);}}
4、在com.ken.springcloud包下新建一个名为controller的包

效果图:

5、在controller包下新建一个名为ConfigClientController的控制类

效果图:

6、修改cloud-config-center-3344子模块的pom.xml文件,然后reolad一下,下载依赖

例:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>springcloud01</artifactId><groupId>com.ken.springcloud</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>cloud-config-center-3344</artifactId><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-config-server</artifactId></dependency><!--以下依赖都没写版本号,没写版本号的情况下会引用父项目的版本--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--监控--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><!--热部署--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></dependency><!--lombok插件--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!--Eureka Clinet--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency><!--添加消息总线RabbitM!支持--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bus-amqp</artifactId></dependency></dependencies></project>

7、修改cloud-config-center-3344子模块的application.yml文件配置

例:

server:port: 3344spring:application:#注册进Eureka的微服务名称name: cloud-config-centercloud:config:server:git:#仓库路径地址uri: https://gitee.com/用户名/springcloud-config.git#搜索目录search-paths:- springcloud-config#跳过ssl验证skip-ssl-validation: true#如果是github的就填github的,如果仓库是公开的,这里不用填username: 这里填你gitee的账号#如果是github的就填github的,如果仓库是公开的,这里不用填password: 这里填你gitee的密码#读取分支label: master#rabbitmq相关配置
rabbitmq:host: localhostport: 5672username: guestpassword: guest#rabbitmq相关配置,暴露bus刷新配置的端点
management:#暴露bus刷新配置的端点endpoints:web:exposure:include: 'bus-refresh'eureka:client:#表示是否将自己注册进Eureka Server里,默认为trueregister-with-eureka: falseservice-url:defaultZone: http://eureka7001.com:7001/eureka/

8、修改cloud-config-client-3355子模块的pom.xml文件,然后reolad一下,下载依赖

例:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>springcloud01</artifactId><groupId>com.ken.springcloud</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>cloud-config-client-3355</artifactId><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-config</artifactId></dependency><!--以下依赖都没写版本号,没写版本号的情况下会引用父项目的版本--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--监控--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><!--热部署--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></dependency><!--lombok插件--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!--Eureka Clinet--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency><!--添加消息总线RabbitM!支持--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bus-amqp</artifactId></dependency></dependencies></project>

9、修改cloud-config-client-3355子模块的bootstrap.yml文件配置

例:

server:port: 3355spring:application:name: config-clientcloud:#config客户端配置(下述4个配置综合起来,意思是读取http://localhost:3344地址里的master分支里的config-dev.ymL配置文件,即读取http://config-3344.com:3344/master/config-dev.ymlconfig:#分支名称label: master#配置文件名称name: config#读取后缀名称profile: dev#配置中心地址uri: http://localhost:3344#rabbitmq相关配置
rabbitmq:host: localhostport: 5672username: guestpassword: guest#服务注册到eureka地址
eureka:client:service-url:defaultZone: http://eureka7001.com:7001/eureka/#暴露监控的端口
management:endpoints:web:exposure:include: "*"

10、修改cloud-config-client-3366子模块的pom.xml文件,然后reolad一下,下载依赖

例:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>springcloud01</artifactId><groupId>com.ken.springcloud</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>cloud-config-client-3366</artifactId><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-config</artifactId></dependency><!--以下依赖都没写版本号,没写版本号的情况下会引用父项目的版本--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--监控--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><!--热部署--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></dependency><!--lombok插件--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!--Eureka Clinet--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency><!--添加消息总线RabbitM!支持--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bus-amqp</artifactId></dependency></dependencies></project>

11、修改cloud-config-client-3366子模块的bootstrap.yml文件配置
server:port: 3366spring:application:name: config-clientcloud:#config客户端配置(下述4个配置综合起来,意思是读取http://localhost:3344地址里的master分支里的config-dev.ymL配置文件,即读取http://config-3344.com:3344/master/config-dev.ymlconfig:#分支名称label: master#配置文件名称name: config#读取后缀名称profile: dev#配置中心地址uri: http://localhost:3344#rabbitmq相关配置
rabbitmq:host: localhostport: 5672username: guestpassword: guest#服务注册到eureka地址
eureka:client:service-url:defaultZone: http://eureka7001.com:7001/eureka/#暴露监控的端口
management:endpoints:web:exposure:include: "*"

12、分别启动eureka-server7001、cloud-config-center-3344、cloud-config-client-3355、cloud-config-client-3366服务

效果图:

13、在浏览器分别输入http://config-3344.com:3344/master/config-dev.yml、http://localhost:3355/configInfo、http://localhost:3366/configInfo,测试配置中心3344是否能成功从gitee上成功取得配置内容,测试客户端3355、3366是否能通过配置中心从gitee上成功取得配置内容

效果图:

gitee上config-dev.yml的配置内容

配置中心3344成功从gitee上成功取得配置内容

客户端3355成功通过配置中心从gitee上成功取得配置内容

客户端3366成功通过配置中心从gitee上成功取得配置内容

14、修改远程仓库上config-dev.yml配置文件的内容
(1)修改远程仓库上config-dev.yml配置文件的内容,我这里把version改为3

(2)提交修改

15、在命令行输入以下命令,然后按回车进行请求,对cloud-config-center-3344服务发送请求让3344服务进行刷新的操作
curl -X POST "http://localhost:3344/actuator/bus-refresh"

效果图:

16、验证是否成功实现动态刷新全局广播

重新在浏览器上请求http://config-3344.com:3344/master/config-dev.yml接口,SpringCloud Config服务端这时候能获取到最新的配置

重新在浏览器上请求接口,发现SpringCloud Config3355客户端这时候能通过服务端获取到最新的配置

重新在浏览器上请求http://localhost:3366/configInfo接口,发现SpringCloud Config3366客户端这时候能通过服务端获取到最新的配置

由上述结果可以看出我们成功的实现了只要刷新SpringCloud Config服务端,就会动态刷新全局SpringCloud Config客户端使客户端动态获取远程仓库上最新配置文件内容的效果

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

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

相关文章

Java+Vue开发的电子招投标管理系统,实现全流程线上操作,高效规范,助力招投标活动透明公正开展

前言&#xff1a; 在数字化浪潮席卷全球的当下&#xff0c;传统招投标模式面临着效率低下、信息不透明、管理成本高等诸多挑战。电子招投标管理系统应运而生&#xff0c;它借助先进的互联网技术和信息化手段&#xff0c;实现了招投标全流程的电子化、自动化和智能化管理。该系…

MyBatisPlus-02-核心功能

文章目录【README】【1】MyBatis-plus常见注解【2】MyBatis-Plus常见配置【2.1】MyBatis-Plus配置示例【3】MyBatisPlus核心内容【3.1】条件构造器【3.1.1】业务场景1-带多字段条件的查询-使用QueryWrapper【3.1.2】业务场景2-带条件的更新-使用QueryWrapper【3.1.3】业务场景3…

ZYNQ MPSOC GTH aurora8b10b IP的修改与仿真

1 ip设置好后的顶层模块接口: 根据自己的开发板修改接口如下: odule gtwizard_ultrascale_0_example_top (// Differential reference clock inputsinput wire mgtrefclk0_x0y1_p,input wire mgtrefclk0_x0y1_n,// Serial data ports for transceiver channel 0input w…

机器学习之线性回归

主要参考&#xff1a; 机器学习| 算法笔记-线性回归&#xff08;Linear Regression&#xff09; - 知乎 (zhihu.com) 2-2 线性回归_哔哩哔哩_bilibili Python机器学习实战&#xff1a;线性回归模型预测波士顿房价_哔哩哔哩_bilibili 回归分析 在数学和统计学中&#xff0c;回归…

Boost.Asio学习(2):同步读写

Asio 的 buffer 是什么&#xff1f; boost::asio::buffer(...) 是一个函数模板&#xff0c;用于创建一个通用的 buffer 对象&#xff0c;可传递给 I/O 函数&#xff08;如 read, write, read_some, write_some 等&#xff09;。 它返回的是 mutable_buffer 或 const_buffer 的…

Java中如何枚举正则表达式捕获组的名字

在使用正则表达式在匹配文本时&#xff0c;除了可以通过表达式捕获命中的文本串外&#xff0c;还可以对捕获的文本串进行命名。尤其是在解析日志的场景中&#xff0c;经常会被用到。表达式如下&#xff1a; \<(?<pri>\d)\>(?<time>.*) (?<host>\S)…

CentOS 系统高效部署 Dify 全攻略

系列文章目录 CentOS系统高效部署fastGPT全攻略 文章目录 系列文章目录一、前言二、准备工作与系统要求三、安装 Docker 与 Docker Compose四、部署 Dify 核心服务五、数据库与存储配置六、网络与安全优化七、监控与运维八、升级与扩展九、附录与资源关键命令速查表官方文档…

xyctf2025第三届京麒CTF

一.MISC 1.XGCTF 直接ai搜索一遍找到了出题人的博客LamentXU 2024-2025年终总结 - LamentXU - 博客园 知道了原题是ciscn中的 在LamentXU的博客乱逛Patriot CTF 2024 MISC 部分 wp - LamentXU - 博客园 找到了博客网站,让后搜索ciscn扎到了博客 CISCN华东南WEB-Polluted |…

Python爬虫 模拟登录 requests版

前言 网站必须是登录状态才能查看网站信息,是最常见的反爬手段,下面我分享一下request模拟登录状态进行请求 目录 模拟登录的原理 直接复制网站Cookie模拟登录状态 通过登录接口信息破解出Cookie模拟登录状态 模拟登录的原理 网站是使用Cookie和session记录网站的登录状态…

一些改进策略

1.要计算一个神经网络模型的总参数量、可训练参数量以及计算量&#xff08;FLOPs&#xff09;&#xff0c;可以使用以下步骤&#xff1a; ### 计算总参数量和可训练参数量&#xff1a; 1. **逐层计算参数量**&#xff1a; - 对于每一层&#xff0c;确定该层的参数量。这通…

React Native响应式布局实战:告别媒体查询,拥抱跨屏适配新时代

前言:当设计师说"这个页面要适配所有手机和平板…" “什么?React Native不支持CSS媒体查询?那怎么实现响应式布局?”——这是很多刚接触React Native的开发者会遇到的灵魂拷问。 但别慌,没有@media,我们照样能玩转多端适配!想象一下:你的App在iPhone SE的小…

[Java恶补day39] 整理模板·考点六【反转链表】

考点六【反转链表】 【考点总结】 1. 206. 【题目】 【核心思路】 【复杂度】 时间复杂度&#xff1a; O ( ) O() O()。 空间复杂度&#xff1a; O ( ) O() O()。 【代码】 92. 【题目】 【核心思路】 【复杂度】 时间复杂度&#xff1a; O ( ) O() O()。 空间复杂度&a…

7,TCP服务器

1,创建一个工程 文件目录:

Modbus_TCP_V5 新功能

odbus TCP 服务器指令 MB_SERVER V5.0 新功能概述 如下图1所示服务器指令 MB_SERVER 从 V5.0 以后增加了三个新功能&#xff0c;分别为&#xff1a; 访问数据块中的数据区域&#xff0c;而不是直接访问 MODBUS 地址过程映像区的读访问限制统计变量 NDR_immediate 和 DR_immed…

2-RuoYi-UI管理平台的启动

RuoYi-UI是RuoYi后端框架的管理中心(基于 Vue.js 的前端项目)的详细配置与启动指南,结合官方文档和常见实践整理,涵盖环境准备、配置修改、启动流程及问题排查。 ⚙️ 一、环境准备 Node.js 版本要求:≥12.0(推荐 ≥14.0 或 18.18+ 适配 Vue3) 安装后验证: node -v …

WPF学习笔记(21)ListBox、ListView与控件模板

ListBox与控件模板 一、 ListBox默认控件模板详解二、ItemsPresenter集合数据呈现1. 概述2. 示例 三、 ListView默认控件模板详解1. 概述2. 示例 一、 ListBox默认控件模板详解 WPF 中的大多数控件都有默认的控件模板。 这些模板定义了控件的默认外观和行为&#xff0c;包括控…

操作系统【2】【内存管理】【虚拟内存】【参考小林code】

本文完全参考 虚拟内存内存分段内存分页段页式内存管理Linux内存管理 一、虚拟内存 1. 单片机的绝对物理地址 以单片机作为引子&#xff0c;它没有操作系统&#xff0c;每次写完程序是借助工具将程序烧录进单片机&#xff0c;程序才能运行。 单片机由于没有操作系统&#…

【王树森推荐系统】召回05:矩阵补充、最近邻查找

概述 这节课和后面几节课将详细讲述向量召回&#xff0c;矩阵补充是向量召回最简单的一种方法&#xff0c;不过现在已经不太常用这种方法了本节课的矩阵补充是为了帮助理解下节课的双塔模型上节课介绍了embedding&#xff0c;它可以把用户ID和物品ID映射成向量 矩阵补充 模型…

C# 事件(订阅事件和触发事件)

订阅事件 订阅者向事件添加事件处理程序。对于一个要添加到事件的事件处理程序来说&#xff0c;它必须具有 与事件的委托相同的返回类型和签名。 使用运算符来为事件添加事件处理程序&#xff0c;如下面的代码所示。事件处理程序位于该运 算符的右边。事件处理程序的规范可以…

64页精品PPT | 基于DeepSeek的数据治理方案AI大数据治理解决方案数据治理大模型解决方案

这份PPT文档是关于基于DeepSeek的大模型技术在数据治理方案中的应用介绍。强调数据作为新型生产要素与人工智能技术相结合的重要性&#xff0c;指出大模型凭借强大的文学理解、生成能力以及多模态数据处理能力&#xff0c;能为数据治理带来新机遇。文档详细阐述了数据资产化的路…