激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - Java教程 - 解析Spring Cloud Bus消息總線

解析Spring Cloud Bus消息總線

2022-03-07 13:05一代健客 Java教程

這篇文章主要介紹了Spring Cloud Bus消息總線的介紹及使用,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

概念

我們使用配置中心時(shí),當(dāng)配置中心的配置發(fā)生了變化,我們就要發(fā)送一個(gè)post請(qǐng)求給客戶端,讓它重新去拉取新的的配置。當(dāng)客戶端有很多時(shí),并且還是使用同一份配置文件,這樣當(dāng)配置中心的配置發(fā)生改變,我們就得逐個(gè)發(fā)送post請(qǐng)求通知,這樣無疑是很浪費(fèi)人力物力的。
Bus消息總線組件就幫我們解決了這個(gè)問題。他的工作流程是這樣的,當(dāng)配置中心的配置發(fā)生了變化時(shí),我們給其中一個(gè)客戶端發(fā)送post請(qǐng)求,然后client將請(qǐng)求的信息發(fā)送到rabbitmq隊(duì)列中,然后消息隊(duì)列將消息發(fā)送給別的隊(duì)列。

使用

準(zhǔn)備工作

項(xiàng)目基于Spring Cloud 第七章的項(xiàng)目改造。

改造config-client 添加相應(yīng)坐標(biāo)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<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.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
 
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bus-amqp</artifactId>
        </dependency>
 
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

在啟動(dòng)類中添加@RefreshScope注解
@RefreshScope注解只需要寫在需要刷新配置文件的地方,不一定非要在啟動(dòng)類中

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
@SpringBootApplication
@EnableEurekaClient
@EnableDiscoveryClient
@RestController
@RefreshScope
public class ConfigClientApplication {
 
    /**
     * http://localhost:8881/actuator/bus-refresh
     */
 
    public static void main(String[] args) {
        SpringApplication.run(ConfigClientApplication.class, args);
    }
 
    @Value("${foo}")
    String foo;
 
    @RequestMapping(value = "/hi")
    public String hi(){
        return foo;
    }
}

配置相關(guān)配置

?
1
2
3
4
5
6
7
8
9
spring.rabbitmq.host=localhost
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
 
spring.cloud.bus.enabled=true
spring.cloud.bus.trace.enabled=true
management.endpoints.web.exposure.include=bus-refresh
management.security.enabled=false  //報(bào)錯(cuò)加上
  • 依次啟動(dòng)eureka-server、confg-cserver,啟動(dòng)兩個(gè)config-client,端口為:8881、8882。
  • 訪問http://localhost:8881/hi 或者h(yuǎn)ttp://localhost:8882/hi 瀏覽器顯示:

foo version 3

  • 這時(shí)我們?nèi)ゴa倉庫將foo的值改為“foo version 4”,即改變配置文件foo的值。如果是傳統(tǒng)的做法,需要重啟服務(wù),才能達(dá)到配置文件的更新。此時(shí),我們只需要發(fā)送post請(qǐng)求:http://localhost:8881/actuator/bus-refresh,你會(huì)發(fā)現(xiàn)config-client會(huì)重新讀取配置文件
  • 1.5版本的post請(qǐng)求http://localhost:8881/bus/refresh
  • 2.0版本的post請(qǐng)求http://localhost:8881/actuator/bus-refresh
  • 這時(shí)我們?cè)僭L問http://localhost:8881/hi 或者h(yuǎn)ttp://localhost:8882/hi 瀏覽器顯示:

foo version 4

另外,/actuator/bus-refresh接口可以指定服務(wù),即使用"destination"參數(shù),比如 “/actuator/bus-refresh?destination=customers:**” 即刷新服務(wù)名為customers的所有服務(wù)。 原理圖

解析Spring Cloud Bus消息總線

當(dāng)git文件更改的時(shí)候,通過pc端用post 向端口為8882的config-client發(fā)送請(qǐng)求/bus/refresh/;此時(shí)8882端口會(huì)發(fā)送一個(gè)消息,由消息總線向其他服務(wù)傳遞,從而使整個(gè)微服務(wù)集群都達(dá)到更新配置文件。

原文鏈接:https://blog.csdn.net/qq_44333590/article/details/121006985

延伸 · 閱讀

精彩推薦
  • Java教程Java中數(shù)組協(xié)變和范型不變性踩坑記錄

    Java中數(shù)組協(xié)變和范型不變性踩坑記錄

    數(shù)組的協(xié)變性來源于數(shù)組的一個(gè)優(yōu)勢,這篇文章主要給大家介紹了關(guān)于Java中數(shù)組協(xié)變和范型不變性踩坑的一些內(nèi)容,文中通過示例代碼介紹的非常詳細(xì),對(duì)...

    左之了8062021-07-17
  • Java教程Swift洗牌動(dòng)畫效果的實(shí)現(xiàn)方法

    Swift洗牌動(dòng)畫效果的實(shí)現(xiàn)方法

    這篇文章主要介紹了Swift洗牌動(dòng)畫效果的實(shí)現(xiàn)方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧...

    beatman_z2002020-07-19
  • Java教程Hibernate用ThreadLocal模式(線程局部變量模式)管理Session

    Hibernate用ThreadLocal模式(線程局部變量模式)管理Session

    今天小編就為大家分享一篇關(guān)于Hibernate用ThreadLocal模式(線程局部變量模式)管理Session,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需...

    徐劉根7492021-07-26
  • Java教程小米推送Java代碼

    小米推送Java代碼

    今天小編就為大家分享一篇關(guān)于小米推送Java代碼,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧...

    富貴穩(wěn)中求5922021-07-12
  • Java教程詳解Java中Collector接口的組成

    詳解Java中Collector接口的組成

    今天給大家?guī)淼氖顷P(guān)于Java基礎(chǔ)的相關(guān)知識(shí),文章圍繞著Collector接口的組成展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下...

    只要你一直跑4082021-09-22
  • Java教程Java中的什么場景使用遞歸,如何使用遞歸

    Java中的什么場景使用遞歸,如何使用遞歸

    這篇文章主要介紹了Java中的什么場景使用遞歸,如何使用遞歸的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝...

    怪咖軟妹@10442021-12-18
  • Java教程詳解Springboot事務(wù)管理

    詳解Springboot事務(wù)管理

    本篇文章主要介紹了詳解Springboot事務(wù)管理,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧...

    icecrea6462021-03-09
  • Java教程Java隨機(jī)生成姓名,手機(jī)號(hào),住址代碼示例

    Java隨機(jī)生成姓名,手機(jī)號(hào),住址代碼示例

    這篇文章主要介紹了Java隨機(jī)生成姓名,手機(jī)號(hào),住址代碼示例,屬于Java基礎(chǔ)方面的內(nèi)容,具有一定參考價(jià)值,需要的朋友可以了解下。...

    nwbg7812021-02-18
主站蜘蛛池模板: 久久伊人国产精品 | 日操操夜操操 | 国产精品久久久久久久久久久久久久久 | 久久激情小视频 | 成人毛片100部 | 九九热视频在线免费观看 | h视频免费在线 | 亚洲第九十九页 | 中文字幕亚洲视频 | 欧美a v在线 | 龙床上的呻吟高h | 中文字幕亚洲情99在线 | 午夜视频在线看 | 二区三区偷拍浴室洗澡视频 | 午夜精品福利影院 | 国产一国产一级毛片视频 | 羞羞网站在线看 | 高颜值美女啪啪 | 91短视频在线观看 | 精品一区二区三区免费毛片爱 | 91麻豆蜜桃一区二区三区 | 欧美黄一级 | 久久成人午夜视频 | 日韩在线视频一区二区三区 | 水多视频在线观看 | 久久精品欧美一区二区 | 午夜视频在线免费 | 福利片在线看 | 国产精品久久久久久影院8一贰佰 | 亚洲国产综合在线观看 | 国产一区视频在线观看免费 | 中文字幕在线免费播放 | 人成免费a级毛片 | 欧美久久久久久久久 | 成品片a免人视频 | 成年性羞羞视频免费观看 | 好吊色欧美一区二区三区四区 | 亚洲一级片在线观看 | 中文字幕精品在线播放 | 视频一区二区视频 | 欧洲精品久久久久69精品 |