zoukankan      html  css  js  c++  java
  • springcloud-bus+config实现动态刷新全局广播配置

      bus支持rabbitmq和kafka,因此需要其中一个mq服务器启动起来。看个人了。下面实现一次post请求,然后全局广播给其他微服务实例

      1. 给 注册中心config 和 服务实例 添加 springcloud-bus-rabbitmq的依赖,如下:

            <!--    添加消息总线RabbitMQ支持    -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-bus-amqp</artifactId>
            </dependency>

      2.  给configServer(注册中心)添加下面的yml配置:

    server:
      port: 3344
    spring:
      rabbitmq:
        host: 192.168.113.6  #rabbitmq所在的IP
        port: 5672 #rabbit暴露的服务端口
        username: guest
        password: guest
    
    management:
      endpoints:
        web:
          exposure:
            include: "bus-refresh"  #暴露bus-refresh这个端点(得这个端点,其他不行),到时候手动给这个端点发送post请求

      3. 然后是 服务实例 添加下面的yml配置:

    spring:
      rabbitmq:
        host: 192.168.113.6  #rabbitmq所在的IP
        port: 5672 #rabbit暴露的服务端口
        username: guest
        password: guest
    
    management:
      endpoints:
        web:
          exposure:
            include: "*" 

      我讲一下,为什么服务实例也得暴露端点?之前我们是给服务实例发送post请求才加上这段配置用于暴露端点的,现在虽然我们不给服务实例发post了,但是 消息总线 会发

      4. 给所有服务实例 需要刷新的业务类 加上 @RefreshScope

      下面使用curl发送post请求给configServer:curl -X POST http://localhost:3355/actuator/bus-refresh;再次强调,/bus-refresh前面是固定的

      发送过去就会刷新 全部服务实例 的配置了。到这里大家很奇怪,流程都懂,就是 configServer发什么东西给bus,bus是如何知道给哪些服务实例发通知呢?原理如下图:

  • 相关阅读:
    redis 源码阅读 数值转字符 longlong2str
    redis 源码阅读 内部数据结构--字符串
    redis 查看的版本
    redis 配置
    redis 基础
    redis 安装
    git 中关于LF 和 CRLF 的问题
    git 常用命令
    linux svn 服务端搭建
    测试开发之Django——No8.Django中的视图与URL配置
  • 原文地址:https://www.cnblogs.com/ibcdwx/p/14449853.html
Copyright © 2011-2022 走看看