1. 概述
1.1 什么是总线
在微服务架构的系统中,通常会使用轻量级的消息代理来构建一个共用的消息主题,并让系统中所有微服务实例都连接上来。由于该主题中产生的消息会被所有实例监听和消费,所以称它为消息总线。在总线上的各个实例,都可以方便地广播一些需要让其他连接在该主题上的实例都知道的消息。
1.2 基本原理
ConfigClient实例都监听MQ中同一个topic(默认是springCloudBus)。当一个服务刷新数据的时候,它会把这个信息放入到Topic中,这样其它监听同一Topic的服务就能得到通知,然后去更新自身的配置。
1.3 Config与Bus结合动态刷新配置文件
2. SpringCloud Bus动态刷新全局广播
2.1 配置中心3344
2.1.1 pom文件
<!--添加消息总线RabbitMQ支持-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
2.1.2 yml文件
#rabbitmq相关配置
spring:
rabbitmq:
host: 192.168.1.103
port: 5672
username: admin
password: admin
# 暴露监控端点
management:
endpoints:
web:
exposure:
include: "bus-refresh"
2.2 配置客户端3355
2.2.1 pom文件
<!--添加消息总线RabbitMQ支持-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
2.2.2 yml文件
#rabbitmq相关配置
spring:
rabbitmq:
host: 192.168.1.103
port: 5672
username: admin
password: admin
# 暴露监控端点
management:
endpoints:
web:
exposure:
include: "*"
2.3 配置客户端3366
- 代码跟3366一样
2.4 测试
- 启动7001
- 启动3344
- 启动3355
- 启动3366
- 访问配置信息
- 在Gitee上修改version的值
- 发送刷新配置请求到3344
curl -X POST "http://localhost:3344/actuator/bus-refresh"
- 再次访问配置信息
3. SpringCloud Bus动态刷新定点通知
curl -X POST "http://localhost:配置中心端口号/actuator/bus-refresh/微服务名:端口号"
// 只通知3355刷新配置,其他的不知道
curl -X POST "http://localhost:3344/actuator/bus-refresh/config-client:3355"