SpringCloud微服务之动态自动更新配置(三)

  • 先看一张动态自动更新原理图:
    这里写图片描述

SpringCloud Bus 负责管理消息队列,实现配置传输给各个服务
WebHook 实现更新配置时自动发送 /bus-refresh 请求

  • 上面两种配置的结合,将实现动态自动更新配置。

一、SpringCloud Bus使用详解

  1. 在config server中添加依赖和配置:
 <!-- spring cloud bus -->
  <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-bus-amqp</artifactId>
  </dependency>

  <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-config-monitor</artifactId>
  </dependency>
 配置:
    # 本地安装是默认的localhost:5672
    spring.rabbitmq.addresses=ip地址:5672
    management.endpoints.web.exposure.include=*

2. config client 端配置(也就是order服务)

  • 添加加依赖:
<dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
  • 添加配置:
    spring.rabbitmq.addresses=ip地址:5672

    我的 MQ 在服务器的Docker上部署,因此需要配置公网IP,否则可以不配置,默认就可以

  • 在需要进行动态刷新配置的地方使用 @RefreshScope 注解

3、 启动config server 和 order 服务
访问order服务的获取远程git的配置。然后修改配置,发送post请求”localhost:8080/actuator/bus-refresh”。 这时候修改后的配置就已经更新到order服务。访问order服务会发现配置已经改变。

二、使用 WebHooks实动态更新配置

github上集成了该功能,因此只需在config-repo中配置WebHooks即可。
配置WebHooks的ip 需要是公网ip,该公网ip 对应这本机的 order服务的ip:port。
这个公网ip 可以通过在 netapp.cn 网站上生成。还用配置WebHooks时Content Type是 application/json 。
此时再修改远程git 内容,order服务会自动获取到。

猜你喜欢

转载自blog.csdn.net/annotation_yang/article/details/80916713