美文网首页
SpringCloud Bus 消息总线

SpringCloud Bus 消息总线

作者: BzCoder | 来源:发表于2018-09-01 01:56 被阅读134次

    上一篇文章我们介绍了配置中心,但是现在更新配置还是要重启啊!?所以我们本章就来介绍一个不重启的方法。

    相关资料以及注意事项:

    服务端

    1.引入MAVEN

    相比上一篇文章,新添加以下两个

    • 添加spring-cloud-starter-bus-amqp,这是消息队列,用于通知更新配置
    • 添加spring-cloud-config-monitor,暴露Moniror端口,用于WebHook,但存在BUG,本文章暂不介绍配合WebHook使用

    2.配置文件

    配置文件配置了RabbitMQ的地址以及暴露刷新配置接口地址

    spring:
      application:
        name: config
      cloud:
        config:
          server:
            git:
              uri: https://github.com/BzCoder/config-repo
              username: 
              password: 
              basedir: D:/Config/basedir
      rabbitmq:
        host: 192.168.15.128
        username: guest
        password: guest
        port: 5672
    
    eureka:
      instance:
        prefer-ip-address: true
      client:
        service-url:
          defaultZone: http://localhost:8762/eureka/
    # 开放 bus-refresh 接口,以便配合 bus 实现 配置的动态刷新
    management:
      endpoints:
        web:
          exposure:
            include: '*'
    

    服务端配置完毕

    客户端

    1.引入MAVEN

    相比上一篇文章,新添加以下一个

    • 添加spring-cloud-starter-bus-amqp,这是消息队列,用于通知更新交互

    2.代码修改

    在你需要刷新的作用域上添加@RefreshScope,这样随着配置刷新,参数就会刷新

    @RestController
    @RefreshScope
    public class ConfigController {
        @Value("${env}")
        private String env;
    
        @GetMapping("/env")
        public String getEnv()
        {
            return env;
        }
    
    }
    

    这样客户端也配置完毕了。

    3.实践操作

    如果在RabbitMQ的管理界面中会出现两个新的队列,那么恭喜你,已经成功了一半了。

    新的队列
    接下来在修改远程仓库的数据后向ConfigServer端口:http://localhost:8080/actuator/bus-refresh,如何返回状态为200,就表示你已经刷新配置。 成功

    在我们的Client端可以看到配置更新的Log,这样就代表你成功了。
    那么有关于SpringCloudBus就介绍到这里了,有关于利用Webhook自动刷新配置,要等待Spring官方进行修复。等以后来填坑。

    相关文章

      网友评论

          本文标题:SpringCloud Bus 消息总线

          本文链接:https://www.haomeiwen.com/subject/swlywftx.html