欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

SpringCloud消息总线(SpringCloud Bus)

程序员文章站 2022-06-12 19:29:47
...

SpringCloud Bus 将分布式的节点用轻量的消息代理连接起来。它可以用于广播配置文件的更改或者服务之间的通讯,也可以用于监控。本文要讲述的是用Spring Cloud Bus实现通知微服务架构的配置文件的更改。

1:首先安装rabbitmq,可自行去官网下载相关版本进行安装; 
2:修改config-client工程,添加相关依赖:

<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>

修改配置文件夹,加入mq相关的配置,完整配置如下:

#服务名称
spring.application.name=config-client
#仓库分支
spring.cloud.config.label=master
#dev开发环境配置文件
#test测试环境
#pro正式环境
spring.cloud.config.profile=dev
#使用eureka server的时候需要注释掉
#spring.cloud.config.uri= http://localhost:8888/

#服务注册地址
eureka.client.service-url.defaultZone=http://localhost:8889/eureka/
#从远程获取配置文件
spring.cloud.config.discovery.enabled=true
#订阅的服务名称
spring.cloud.config.discovery.service-id=config-server
server.port=8881


#使用总线时
management.security.enabled=false

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

然后复制config-client工程,重命名为config-client2,修改配置文件的端口号为:8882 
依次启动config-eureka-server,config-server,config-client,config-client2。然后通过浏览器访问http://localhost:8881/hi,和http://localhost:8882/hi 可以看到相同的返回值,和我们Git远程仓库的配置文件值相同。

然后,我们修改git仓库中的foo的值,然后通过postman工具,请求http://localhost:8881/bus/refreshhttp://localhost:8882/bus/refresh,记住只需要请求其中一个即可,当我们请求完后,可以看到config-client,config-client2的控制台有重新拉去git仓库配置文件中的日志。然后我们重新请求http://localhost:8881/hi,和http://localhost:8882/hi,可以看到返回值已经改成了我们在git远程仓库的配置。通过总线技术,我们就实现了在更改了配置文件以后,不需要重新启动工程,即可重新加载配置文件的功能。 
另外,/bus/refresh接口可以指定服务,即使用”destination”参数,比如 “/bus/refresh?destination=a:**” 即刷新服务名为a的所有服务,不管ip。 
此时的系统架构图如下; 
SpringCloud消息总线(SpringCloud Bus) 
当git文件更改的时候,通过pc端用post 向端口为8882的config-client发送请求/bus/refresh/;此时8882端口会发送一个消息,由消息总线向其他服务传递,从而使整个微服务集群都达到更新配置文件。

相关标签: SpringCloud