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