欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

RabbitMQ消息總線方式刷新配置服務(wù)全過程

 更新時(shí)間:2025年07月17日 14:11:10   作者:小凱  ?  
Spring Cloud Bus通過消息總線與MQ實(shí)現(xiàn)微服務(wù)配置統(tǒng)一刷新,結(jié)合Git Webhooks自動(dòng)觸發(fā)更新,避免手動(dòng)重啟,提升效率與可靠性,適用于配置管理及全局信息同步場(chǎng)景

前言介紹

在微服務(wù)架構(gòu)中,為了更方便的向微服務(wù)實(shí)例廣播消息,我們通常會(huì)構(gòu)建一個(gè)消息中心,讓所有的服務(wù)實(shí)例都連接上來,而該消息中心所發(fā)布的消息都會(huì)被微服務(wù)實(shí)例監(jiān)聽和消費(fèi),我們把這種機(jī)制叫做消息總線(SpringCloud
Bus)

當(dāng)我們的微服務(wù)達(dá)到是幾個(gè)到百個(gè)以上,在更新配置時(shí),不太可能一個(gè)個(gè)刷新或者重啟,這樣既不能保證效率也容易導(dǎo)致遺漏造成事故。因此我們需要SpringCloud Bus 提供總線服務(wù),在我們push代碼到Git的時(shí)候,通過Webhooks(http://localhost:port/actuator/bus-refresh/)執(zhí)行刷新,消息總線會(huì)通知各個(gè)實(shí)例更新配置,以達(dá)到自動(dòng)更新全服務(wù)配置。

環(huán)境準(zhǔn)備

  • jdk 1.8、idea2018、Maven3
  • Spring Boot 2.0.6.RELEASE
  • Spring Cloud Finchley.SR2

需要有一個(gè)Git帳號(hào),用來創(chuàng)建配置中心以及開啟Webhooks服務(wù),添加回調(diào)

RabbitMQ服務(wù)端環(huán)境安裝

  1. 下載Erlang;http://www.erlang.org/downloads {安裝后配置環(huán)境變量:D:\Program Files\erl10.5}
  2. 下載rabbitMQ;http://www.rabbitmq.com/download.html {安裝后CMD依次執(zhí)行}
  • cd D:\Program Files\RabbitMQ Server\rabbitmq_server-3.8.1\sbin
  • rabbitmq-plugins.bat enable rabbitmq_management
  • rabbitmq-service.bat stop
  • rabbitmq-service.bat start
  • 瀏覽器訪問;http://127.0.0.1:15672
  • 服務(wù)端口5672

代碼示例

itstack-demo-springcloud-07
├── itstack-demo-springcloud-config-client
│   └── src
│       └── main
│           ├── java
│           │   └── org.itstack.demo
│           │        ├── web
│           │        │   └── ConfigClientController.java      
│           │        └── ConfigClientApplication.java
│           └── resources   
│               ├── application.yml
│               └── bootstrap.yml
├── itstack-demo-springcloud-config-server
│   └── src
│       └── main
│           ├── java
│           │   └── org.itstack.demo   
│           │        └── ConfigServerApplication.java
│           └── resources   
│               └── application.yml
└── itstack-demo-springcloud-eureka-server
     └── src
        └── main
            ├── java
            │   └── org.itstack.demo   
            │        └── EurekaServerApplication.java
            └── resources   
                └── application.yml

itstack-demo-springcloud-config-client | 配置獲取客戶端方,提供自動(dòng)刷新Http

web/ConfigClientController.java & 添加注解@RefreshScope自動(dòng)刷新配置

@RestController
@RefreshScope
public class ConfigClientController {

    @Value("${info.profile:error}")
    private String profile;

    @GetMapping("/config")
    public Mono<String> config() {
        return Mono.justOrEmpty(profile);
    }

}

ConfigClientApplication.java & 普通配置即可

@SpringBootApplication
public class ConfigClientApplication {

    public static void main(String[] args) {
        SpringApplication.run(ConfigClientApplication.class, args);
    }

}

application.yml & 需要配置endpoints,這樣才可以暴漏刷新服務(wù)

spring:
  application:
    name: itstack-demo-springcloud-config-client
  cloud:
    bus:
      trace:
        enabled: true
      enabled: true
server:
  port: 9001

# 如果不使用消息總線,則開啟如下配置 /actuator/refresh 這個(gè) Endpoint 暴露出來
#management:
#  endpoints:
#    web:
#      exposure:
#        include: refresh

bootstrap.yml & 配置中心服務(wù)配置,http://localhost:7397 添加配置服務(wù)

spring:
  cloud:
    config:
      name: config-client         # 對(duì)應(yīng) {application} 部分,例如;config-client-dev = 只取最后一個(gè)符號(hào)'-'之前的
      profile: dev                # 對(duì)應(yīng) {profile} 部分
      label: master               # 對(duì)應(yīng) {label} 部分,即 Git 的分支。如果配置中心使用的是本地存儲(chǔ),則該參數(shù)無用
      discovery:
        enabled: true             # 開啟 config 服務(wù)發(fā)現(xiàn)支持
        service-id: itstack-demo-springcloud-config-server        # 配置服務(wù)name

#配置文件會(huì)被轉(zhuǎn)換成 Web,訪問規(guī)則如下;
#/{application}/{profile}[/{label}]
#/{application}-{profile}.yml
#/{label}/{application}-{profile}.yml
#/{application}-{profile}.properties
#/{label}/{application}-{profile}.properties

eureka:
  client:
    service-url:
      defaultZone: http://localhost:7397/eureka/

itstack-demo-springcloud-config-server | 配置提供服務(wù)端方,鏈接Git配置工程地址

ConfigServerApplication.java & 添加注解@EnableConfigServer設(shè)置成配置服務(wù)中心

@SpringBootApplication
@EnableConfigServer
public class ConfigServerApplication {

    public static void main(String[] args) {
        SpringApplication.run(ConfigServerApplication.class, args);
    }

}

application.yml & 配置信息,消息總線刷新

server:
  port: 8080

spring:
  application:
    name: itstack-demo-springcloud-config-server
  cloud:
    config:
      server:
        git:
          uri: https://github.com/fuzhengwei/itstack-demo-config  # 換成自己的配置Git倉庫的地址,如果沒有可以新建工程地址,也可以克隆我的;https://github.com/fuzhengwei/itstack-demo-config
          search-paths: config-repo                               # Git倉庫地址下的底層配置文件名稱,如果配置多個(gè)用逗號(hào)','分割。

# 如果配置中心需要訪問權(quán)限,則開啟配置
# spring.cloud.config.server.git.username:Github賬戶
# spring.cloud.config.server.git.password:Github密碼

eureka:
  client:
    service-url:
      defaultZone: http://localhost:7397/eureka/
management:
  endpoints:
    web:
      exposure:
        include: bus-refresh

itstack-demo-springcloud-eureka-server | 服務(wù)注冊(cè)發(fā)現(xiàn)

EurekaServerApplication.java & 添加注解@EnableEurekaServer啟動(dòng)服務(wù)發(fā)現(xiàn)

@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {

    public static void main(String[] args) {
        SpringApplication.run( EurekaServerApplication.class, args );
    }

}

application.yml & 配置信息

server:
  port: 7397

eureka:
  instance:
    hostname: localhost
  client:
    registerWithEureka: false
    fetchRegistry: false
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

spring:
  application:
    name: itstack-demo-springcloud-eureka-server

測(cè)試驗(yàn)證

1.準(zhǔn)備好自己Github的配置倉庫,也可以克隆我的Git;https://github.com/fuzhengwei/itstack-demo-config {有一組配置配置文件}

2.配置Webhooks,在https://github.com/換你自己的fuzhengwei/換你自己的itstack-demo-netty/settings/hooks/new

3.分別啟動(dòng)服務(wù)

1.啟動(dòng)RabbitMQ服務(wù);http://127.0.0.1:15672/#/
2.itstack-demo-springcloud-eureka-server 服務(wù)注冊(cè)發(fā)現(xiàn)
3.itstack-demo-springcloud-config-server 配置Server
4.itstack-demo-springcloud-config-client 配置Client

4.訪問配置服務(wù),端口7397;http://localhost:8080/config-client/dev

4.1.訪問結(jié)果

{
	"name": "config-client",
	"profiles": [
		"dev"
	],
	"label": null,
	"version": "ea0b1a1017595d542aa01b8b2bda68f9620dd81a",
	"state": null,
	"propertySources": [
		{
			"name": "https://github.com/fuzhengwei/itstack-demo-config/config-repo/config-client-dev.yml",
			"source": {
				"info.profile": "dev bus"
			}
		}
	]
}

4.2.訪問規(guī)則{配置文件會(huì)被轉(zhuǎn)換成 Web 接口,規(guī)則如下}

/{application}/{profile}[/{label}]
/{application}-{profile}.yml
/{label}/{application}-{profile}.yml
/{application}-{profile}.properties
/{label}/{application}-{profile}.properties

4.3.訪問配置文件;http://localhost:8080/config-client-dev.yml {可以直接訪問查看配置信息}

info: profile: dev bus

5.訪問使用配置的客戶端

5.1.訪問端口9001;http://localhost:9001/config

dev bus

5.2更改配置,POST請(qǐng)求刷新配置總線;http://localhost:8080/actuator/bus-refresh/ {如果配置Git的Webhooks則更新代碼自動(dòng)刷新}

5.3訪問端口9001;http://localhost:9001/config

dev

總結(jié)

Spring Cloud Bus 可以更加方便的控制全局信息,用于統(tǒng)一刷新并通過MQ方式通過客戶端

如果你的內(nèi)網(wǎng)想進(jìn)行Git的Webhooks配置,可以使用http://natapp.cn進(jìn)行內(nèi)網(wǎng)穿透映射,他會(huì)給你提供免費(fèi)外網(wǎng)調(diào)用服務(wù)

消息總線方式不只是應(yīng)用于配置刷新,在一起同步信息請(qǐng)求中都可以使用,以及自己的項(xiàng)目架設(shè)上

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • mybatis in foreach 雙層嵌套問題

    mybatis in foreach 雙層嵌套問題

    這篇文章主要介紹了mybatis in foreach 雙層嵌套問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • Maven3種打包方式中maven-assembly-plugin的使用詳解

    Maven3種打包方式中maven-assembly-plugin的使用詳解

    這篇文章主要介紹了Maven3種打包方式中maven-assembly-plugin的使用,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • Spring Boot項(xiàng)目添加外部Jar包以及配置多數(shù)據(jù)源的完整步驟

    Spring Boot項(xiàng)目添加外部Jar包以及配置多數(shù)據(jù)源的完整步驟

    這篇文章主要給大家介紹了關(guān)于Spring Boot項(xiàng)目添加外部Jar包以及配置多數(shù)據(jù)源的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • Java中String的intern()方法詳細(xì)說明

    Java中String的intern()方法詳細(xì)說明

    這篇文章主要介紹了Java中String的intern()方法詳細(xì)說明,String::intern()是一個(gè)本地方法,他的作用就是如果字符串常量池中已經(jīng)包含了一個(gè)等于此String對(duì)象的字符串,則返回代表池中的這個(gè)字符串額String對(duì)象的引用,需要的朋友可以參考下
    2023-11-11
  • Java注解處理器學(xué)習(xí)之編譯時(shí)處理的注解詳析

    Java注解處理器學(xué)習(xí)之編譯時(shí)處理的注解詳析

    編譯時(shí)注解相信對(duì)每一個(gè)java開發(fā)者來說都不陌生,下面這篇文章主要給大家介紹了關(guān)于Java注解處理器學(xué)習(xí)之編譯時(shí)處理的注解的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來一起看看吧
    2018-05-05
  • Spring Boot項(xiàng)目打包指定包名實(shí)現(xiàn)示例

    Spring Boot項(xiàng)目打包指定包名實(shí)現(xiàn)示例

    這篇文章主要為大家介紹了Spring Boot項(xiàng)目打包指定包名實(shí)現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • 郵件的組織結(jié)構(gòu)介紹 郵件實(shí)現(xiàn)詳解(三)

    郵件的組織結(jié)構(gòu)介紹 郵件實(shí)現(xiàn)詳解(三)

    這篇文章主要為大家詳細(xì)介紹了郵件的組織結(jié)構(gòu),郵件內(nèi)容的基本格式和具體細(xì)節(jié),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • springBoot+mybaties后端多層架構(gòu)的實(shí)現(xiàn)示例

    springBoot+mybaties后端多層架構(gòu)的實(shí)現(xiàn)示例

    本文主要介紹了springBoot+mybaties后端多層架構(gòu)的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • Java 自定義動(dòng)態(tài)數(shù)組方式

    Java 自定義動(dòng)態(tài)數(shù)組方式

    這篇文章主要介紹了Java自定義動(dòng)態(tài)數(shù)組方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • IntelliJ?IDEA?2022安裝注冊(cè)永久激活

    IntelliJ?IDEA?2022安裝注冊(cè)永久激活

    java開發(fā)工具IntelliJ?IDEA深受用戶喜愛,很多朋友對(duì)這個(gè)idea開發(fā)工具比較忠心,一旦有新版本發(fā)出,很多小伙伴就迫不及待的想更新,今天小編給大家?guī)砹薸dea2022.1最新永久激活碼,親測(cè)有效,喜歡的朋友快來下載體驗(yàn)吧
    2022-08-08

最新評(píng)論