一、关于
Spring Cloud Bus 将分布式系统的节点与轻量级消息代理连接起来。然后可以广播管理指令(例如配置更改),管理分布式系统中的所有节点。
本文代码仓库地址:https://github.com/lazyrabb1t/rabb-springcloud-demo
二、使用Spring Cloud Bus实现配置的动态刷新
1、安装kafka
2、config-server模块配置
添加依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-kafka</artifactId>
</dependency>
添加kafka连接地址以及暴露刷新配置的端口:
server:
port: 16000
spring:
application:
name: rabb-config-server
cloud:
config:
server:
git:
uri: https://gitee.com/lazyrabb1t/test-springcloud-config.git
# username: username@xx.xx
# password: xxxxxx
clone-on-start: true
timeout: 50
force-pull: true
kafka:
# kafka连接地址
bootstrap-servers: 127.0.0.1:9092
management:
endpoints: #暴露bus刷新配置的端点
web:
exposure:
include: 'busrefresh'
eureka:
client:
service-url:
defaultZone: http://localhost:10002/eureka/
...
3、config-client模块配置
添加依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-kafka</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
添加配置:
server:
port: 17000
spring:
application:
name: rabb-config-client
cloud:
config:
# uri: http://localhost:16000
profile: dev
label: master
name: rabb
discovery:
enabled: true
service-id: RABB-CONFIG-SERVER
kafka:
# kafka连接地址
bootstrap-servers: 127.0.0.1:9092
management:
endpoints:
web:
exposure:
# 暴露刷新配置端点
include: 'refresh'
eureka:
client:
service-url:
defaultZone: http://localhost:10002/eureka/
4、启动eureka-server、config-server和config-client模块进行测试
修改git中对应的配置,然后调用配置中心服务端的busrefresh
端点
curl -X POST http://localhost:16001/actuator/refresh
再次访问客户端程序接口就可以发现配置已经更新