一、原理简介
Spring Cloud Bus 使用轻量级的消息代理来连接微服务架构中的各个服务,可以将其用于广播状态更改(例如配置中心配置更改)或其他管理指令
通常会使用消息代理来构建一个主题,然后把微服务架构中的所有服务都连接到这个主题上去,当我们向该主题发送消息时,所有订阅该主题的服务都会收到消息并进行消费。
使用 Spring Cloud Bus 可以方便地构建起这套机制,所以 Spring Cloud Bus 又被称为消息总线。
Spring Cloud Bus 配合 Spring Cloud Config 使用可以实现配置的动态刷新。
目前 Spring Cloud Bus 支持两种消息代理:RabbitMQ 和 Kafka。
下面以 RabbitMQ 为例来演示下使用Spring Cloud Bus 动态刷新配置的功能。
二、测试的配置文件准备
三、启动rabbitmq (上篇文章已介绍)
四、启动注册中心
五、启动配置中心
六、启动配置客户端1
七、启动配置客户端2
八、动态刷新配置演示
我们先启动相关服务,启动eureka-server,以application-amqp.yml为配置启动config-server,以bootstrap-amqp1.yml为配置启动config-client,以bootstrap-amqp2.yml为配置再启动一个config-client,启动后注册中心显示如下:
启动所有服务后,我们登录RabbitMQ的控制台可以发现Spring Cloud Bus 创建了一个叫springCloudBus的交换机及三个以 springCloudBus.anonymous开头的队列:
查询目前配置
修改配置
刷新配置
再次查询
如果只需要刷新指定实例的配置可以使用以下格式进行刷新:http://localhost:8904/actuator/bus-refresh/{destination} ,我们这里以刷新运行在9004端口上的config-client为例http://localhost:8904/actuator/bus-refresh/config-client:9004。
自动刷新
九、项目源码地址
https://gitee.com/pingfanrenbiji/spring-cloud-repo.git
https://gitee.com/pingfanrenbiji/springcloud-learning.git
十、参考文章
https://juejin.im/post/5da70d1351882509615bea34
网友评论