Spring Cloud学习笔记(十一)-使用Spring Cloud Bus刷新配置

说明:本文仅作为本人学习<<深入理解Spring Cloud与微服务构建>>一书的学习笔记,所有代码案例及文字描述均参考该书,不足之处,请留言指正,不胜感激.
一.Spring Cloud Bus是干什么的
  Spring Cloud Bus是用轻量的消息代理将分布式的节点连接起来,可以用于广播配置文件的更改或者服务的监控管理.一个关键的思想就是,消息总线可以为微服务做监控,也可以实现应用程序之间相互通信,Spring Cloud Bus可选的消息代理组件包括RabbitMQ,AMQP和Kafka等.这里我们使用RabbitMQ.
二.为什么要使用Spring Cloud Bus去刷新配置
  如果有几十个微服务,而每一个微服务又是多实例,当更改配置时,需要重启多个微服务实例,会非常麻烦.Bus组件能让这个过程变得简单,当远程Git仓库的配置更改后,只需要向某一个微服务实例发送一个Post请求,通过消息组件通知其他微服务实例重新拉取配置文件.
三.如何实现
  1.首先,我们在消费者服务的pom文件中引入RabbitMQ实现的Spring Cloud Bus的起步依赖spring-cloud-starter-bus-amqp(需要安装RabbitMQ),如下:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>

  2.在customer-server-dev.yml文件中,加上RabbitMQ的相关配置(通常情况下我们开发,测试,生产环境的RabbitMQ是不同的服务,所以我们配置在customer-server-dev.yml中)
这里写图片描述
  3.在bootstrap.yml文件中,设置management.security.enabled=false,因为通过消息总线更改配置,需要经过安全验证,我们先把安全验证屏蔽掉(屏蔽安全认证必须放在bootstrap.yml中,放到customer-server-dev.yml中会出错,因为bootstrap的优先级高一些).
这里写图片描述
  4.在需要更新的配置类上加上@RefreshScope,只有添加了该注解,才可以在不重启的情况下更新配置,如图:
这里写图片描述
  5.当我们修改配置文件后(这里修改myValue),将配置文件push到GitHub,然后Post请求消费者服务的 ip:port/bus/refresh,刷新配置,如下:
这里写图片描述
  6.最后我们请求获取value的接口,发现值已经从aaa!变为Spring Cloud Bus success! 了,说明Spring Cloud Bus 配置成功了.
这里写图片描述

猜你喜欢

转载自blog.csdn.net/fly_zhaohy/article/details/81047901