什么是总线:在微服务架构的系统中,通常会使用轻量级的消息代理来构建一个公用的消息主题,并让该系统中的所有微服务实例都连接上来。由于该主题中产生的消息会被所有实例监听和消费,所以称他为消息总线。
基本原理:ConfigClient实例都监听MQ中同一个topic(默认是SpringCloudBus)。当一个服务刷新数据的时候,他会把这个消息放入topic,这样其他监听同一个topic的服务就能够得到通知,然后去更新自身配置。
SpringCloud配置中心+消息总线服务端配置
1.引入依赖
<dependency> <!--消息总线RabbitMQ的支持-->
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
<!-- 配置中心 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server </artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
2.application.yml配置
server:
port: 3344
spring:
application:
name: cloud-config-center
cloud:
config: #配置中心配置
server:
git:
uri: https://github.com/lxy187*****/config-center.git #github仓库地址
search-paths:
- config-center
label: master #仓库分支
rabbitmq: #配置中心配置 bus-rabbitmq
host: 192.168.1.8
port: 5672
username: admin
password: admin
management: #向外暴露监控端口
endpoints:
web:
exposure:
include: "bus-refresh"
eureka:
instance:
hostname: cloud-config-center
prefer-ip-address: true #是否显示微服务IP地址
client:
register-with-eureka: true
fetch-registry: true
service-url:
defaultZone: http://eureka7001:7001/eureka,http://eureka7002:7002/eureka #Eureka集群配置
配置中心+消息总线 客户端配置
1.引入依赖
<dependency> <!--消息总线RabbitMQ的支持 -->
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
<dependency> <!--配置中心客户端 依赖 -->
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
2.bootstrap.yml配置
server:
port:3355
spring:
application:
name: cloud-config-client
cloud:
config: #confi配置
label: master #分支
name: config #配置文件名称
profile: dev #文件后缀
uri: http://localhost:3344 #配置中心 服务端地址
rabbitmq:
host: 192.168.1.8
port: 5672
username: admin
password: admin
#暴露监控接口
management:
endpoints:
web:
exposure:
include: "*"
eureka:
instance:
instance-id: cloud-config-client
ip-address: true
client:
register-with-eureka: true
fetch-registry: true
service-url:
defaultZone: http://eureka7001:7001/eureka,http://eureka7002:7002/eureka #Eureka集群配置
在gihub上修改 config-dev.yml配置文件后,使用post请求访问 配置中心服务端:
http://localhost:3344/actuator/re-fresh 进行广播刷新,使所有客户端更新配置
也可访问 http://localhost:3344/actuator/re-fresh/{destination} 刷新指定的微服务配置
destination:微服务名称(spring.application.name)+端口号 ,例如 http://localhost:3344/actuator/re-fresh/cloud-config-center:3355