Spring Cloud 2-Bus 消息總線(九)


 

 

 

服務架構
服務架構

 

在分布式配置中,客戶端獲取遠程最新配置時(比如:Git),要手動發送POST請求客戶端來刷新.在集群環境下,不是很方便.使用Spring Cloud Bus總線可以自動刷新客戶端配置.

1.服務端配置

pom.xml

<!-- config-server 服務配置中心 -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-config-server</artifactId>
</dependency>
<!-- bus 消息總線 -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>

application.yml

spring:
 application:
 name: config-bus-server
 cloud:
 config:
 server:
 git:
 uri: https://github.com/xianghaizing/spring-cloud-learn
 search-paths: config-repo
  # 以下都是默認配置
 rabbitmq:
 host: localhost
 port: 5672
 username: guest
 password: guest
    
server:
 port: 8888

management:
 endpoints:
 web:
 exposure:
 include: bus-refresh # 暴露刷新節點 2.x版本需要手動開啟 

2.客戶端配置

pom.xml

<!-- spring mvc -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 配置中心client端 -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<!-- bus 消息總線 -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>

application.yml

spring:
 application:
 name: config-bus-client
 cloud:
 config:
 uri: http://localhost:8888
 name: lyf # 遠程文件的application名字
 profile: dev
 label: master
 bus:
 trace:
 enabled: true
  # 以下都是默認配置
 rabbitmq:
 host: localhost
 port: 5672
 username: guest
 password: guest

server:
 port: 8040
  • name 遠程文件的application名字
  • rabbitmq RabbitMQ服務地址以及用戶名和密碼

Controller.java

@RefreshScope
@RestController
public class BusClientController {

  @Value("${from}")
  private String from;

  @GetMapping("/from")
  public String getFrom(){
    return this.from;
  }

}

@RefreshScope 必須添加才能自動刷新

3.自動刷新配置

依次啟動:

  1. 啟動RabbitMQ服務
  2. 啟動服務端
  3. 啟動多個客戶端

驗證順序和方式跟之前一樣.只是,現在要向服務端發送請求,而不是客戶端!
POST: http://localhost:8888/actuator/bus-refresh
所有客戶端的配置都已經更新.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM