SpringCloud系列(46)--SpringCloud Bus實現動態刷新全局廣播

前言:上一節中我們簡單的介紹了什么是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;能為數據治理帶來新機遇。文檔詳細闡述了數據資產化的路…