zoukankan      html  css  js  c++  java
  • 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
    所有客户端的配置都已经更新.

  • 相关阅读:
    wget(转)
    852. Peak Index in a Mountain Array
    617. Merge Two Binary Trees
    814. Binary Tree Pruning
    657. Judge Route Circle
    861. Score After Flipping Matrix
    832. Flipping an Image
    461. Hamming Distance
    654. Maximum Binary Tree
    804. Unique Morse Code Words
  • 原文地址:https://www.cnblogs.com/linyufeng/p/10205328.html
Copyright © 2011-2022 走看看