第八章 Spring Cloud 消息总线(Spring Cloud Bus)

Spring Cloud Bus 将分布式的节点用轻量的消息代理连接起来。它可以用于广播配置文件的更改或者服务之间的通讯,也可以用于监控。本文要讲述的是用Spring Cloud Bus实现通知微服务架构的配置文件的更改。
架构图如下:
在这里插入图片描述
步骤如下:
1、使用者触发post给Config Client(spring-cloud-config-client-1)发送/actuator/bus-refresh。
2、Config Client(spring-cloud-config-client-1)接收消息请求Config Server(spring-cloud-config)获得git上的配置信息然后发送到Spring Cloud Bus。
3、Spring Cloud Bus接收到消息通知给其它的客户端。
4、其它客户端接收到消息,请求Config Server端获得配置信息。
5、全部的客户端均获得最新的配置信息。

准备工作:
本篇文章基于上一篇的基础上进行改造和实现。本章需要用到rabbitmq,我极力推荐使用docker安装。如果直接在linux上安装,非常的复杂和麻烦,本人深有体会。关于docker如何安装rabbitmq请看:
使用docker安装rabbitmq

本篇需要4个微服务的支持:
spring-cloud-eureka-server 8080
spring-cloud-config 8090
spring-cloud-config-client-1 8091
spring-cloud-config-client-2 8092

关于“spring-cloud-eureka-serve”和“spring-cloud-config”创建过程不再赘述,不清楚的可以查看上一篇文章

第一步:改造Config Client(spring-cloud-config-client)

将“spring-cloud-config-client”重新命名为“spring-cloud-config-client-1”,并同样的创建另一个Config Client(spring-cloud-config-client-2)。由于两个Client的配置方式是一样的,因此就拿其中一个Client详细介绍。
完整的配置依赖如下:

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-config</artifactId>
        </dependency>
        <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>
    </dependencies>

第二步:配置application.properties

文件application.properties中加上RabbitMq的配置,包括RabbitMq的地址、端口,用户名、密码。并需要加上spring.cloud.bus的三个配置,具体如下:

#1、rabbitmq的主机地址
spring.rabbitmq.host=192.168.1.128
#2、rabbitmq的端口
spring.rabbitmq.port=5672
#3、rabbitmq的账号
spring.rabbitmq.username=brimen
#4、rabbitmq的密码
spring.rabbitmq.password=123456

#5、消息总线可用
spring.cloud.bus.enabled=true
#6、trace可用
spring.cloud.bus.trace.enabled=true
#7、刷新
management.endpoints.web.exposure.include=bus-refresh

第三步:依次启动项目

依次启动spring-cloud-eureka-serve、spring-cloud-config、spring-cloud-config-client-1
和spring-cloud-config-client-2

第四步:接口访问

访问 http://localhost:8091/getvalue 或者 http://localhost:8092/getvalue 查看是否能正常获得值
在这里插入图片描述

第五步:git修改配置文件当中的属性

在这里插入图片描述

第六步:使用postman刷新配置

http://localhost:8091/actuator/bus-refresh 使用post请求的方式进行刷新
在这里插入图片描述

第七步:重新访问接口

使用postman请求刷新以后,然后重新使用
http://localhost:8091/getvalue 或者 http://localhost:8092/getvalue 访问
发现值已经改变,到此已经成功。
在这里插入图片描述

扫描二维码关注公众号,回复: 5436378 查看本文章

猜你喜欢

转载自blog.csdn.net/qq_24630433/article/details/87629853