Spring Cloud 学习之 自动刷新配置

上回书说到…说到如何从配置中心拉取配置,遗留问题就是当我们更新git上的配置文件时其实服务是没办法实时更新的,其实spring cloud提供了很多种刷新配置的方法,学习下!

使用bus刷新配置

上面提到,spring cloud提供了很多种刷新配置的方法,但是我只想记这一种,因为其他的我感觉不实用= =

  1. 安装rabbitmq
    这个大家想怎么安装就怎么安装了,去官网下载还是用docker随意,我是装在docker里= =
  2. config-server的pom文件里添加依赖,然后再改下yml

    1
    2
    3
    4
    5
    6
    7
    8
    <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-bus-amqp</artifactId>
    </dependency>
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    management:
    endpoints:
    web:
    exposure:
    include: "bus-refresh" #暴露刷新配置的接口
    spring:
    rabbitmq:
    addresses: 192.168.1.102:5672 #rabbitmq 的地址 等同于 host:port
    host: rabbitmq的ip
    port:rabbitmq的端口
    username: 默认guest
    password: 默认guest
  3. 同样修改下config-clent的pom跟yml,yml只需要加上rabbitmq的配置就行了

  4. 在使用到配置的地方,加上@RefreshScope注解,这样才会刷新!

ok,做完上面4步之后启动项目,访问rabbitmq的控制台会发现并没有新的队列出现???访问配置中心的 /actuator/bus-refresh 接口没效果而且还会报错🙄
百度之后发现用的greenwich.m1版本链接rabbitmq会有问题,我丢!修改下父pom,把版本改成greenwich.release问题解决,配置也能正确刷新

webhooks实现动态更新

一般git仓库都会提供这个功能,更新的时候去访问到那个刷新接口就好了,现在用不到知道就好了,鬼知道后面她会改成啥样😓

end…拜拜!