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
    所有客户端的配置都已经更新.

  • 相关阅读:
    事例学习开发WEBSERVER服务器(一)
    一个简单的减法程序看看基本功
    Linux 网络编程一步一步学(三)循环读取服务器上的数据
    screen配置——screenrc
    ubuntu NGINX LUA安装
    Linux 网络编程一步一步学(二)绑定IP 和端口
    git常用命令
    浅谈算法——冒泡排序
    ack 安装和使用事例
    Linux 网络编程一步一步学(六)客户/服务端通信
  • 原文地址:https://www.cnblogs.com/linyufeng/p/10205328.html
Copyright © 2011-2022 走看看