Spring Cloud Bus消息总线

前面https://blog.csdn.net/didi7696/article/details/80337946讲到Spring Cloud Config把配置文件放到gitHub上来读取。通过/refresh接口来更新读取修改的文件,从而可以读取新的值。但是,若所有触发操作均需要我们手工去维护Web Hook中的应用位置的话,这随着系统的不断扩张,会变的越来越难以维护,而消息代理中间件是解决该问题最为合适的方案。是否还记得我们在介绍消息代理中的特点时有提到过这样一个功能:消息代理中间件可以将消息路由到一个或多个目的地。利用这个功能,我们就能完美的解决该问题,下面我们来说说Spring Cloud Bus中的具体实现方案。现在通过Spring Cloud Bus在多个客户端的情况下只要通过/bus/refresh(post请求)这个接口刷新一次,所有的客户端读取的将是最新的配置文件的内容。

在前面项目的基础上增加如下的内容

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

配置文件中配置RabbitMQ的信息

spring.rabbitmq.host=localhost
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest

先启动配置文件服务端在分别启动多个配置文件客户端(端口号不同)
通过post请求访问其中一个客户端的/bus/refresh接口,到这里,我们已经能够通过Spring Cloud Bus来实时更新总线上的属性配置了。所有的客户端都可以获得最新的profile的值。

工作原理:
这里写图片描述

图中的Gi仓库,config Server 以及ServerA都被引入在Rabbit MQ的消息总线上。当其中一个ServerA的/bus/refreshi接口被访问的时候,被访问的ServerA会向消息总线方式发送消息并获取最新的配置,消息总线的消息事件会被其他的ServerA获取并从Git仓库获取最新的消息

参考:
http://blog.didispace.com/springcloud7/

猜你喜欢

转载自blog.csdn.net/didi7696/article/details/80452479