通过消息总线bus可以实现配置参数的热刷新。
关于配置中心的配置见https://blog.csdn.net/qq_27289875/article/details/77620373。
spring cloud总线支持rabbitmq,kafka。本文搭配基于kafka的消息总线。
默认已经安装kafka。
版本:springBoot 2.0.4 ;spring cloud Finchley; kafka 2.11-1.1.0 。
总线不区分server端与client端,所有节点都需作如下配置:
1.引入pom文件
<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>
2.配置properties文件
spring:
cloud:
bus: #添加总线配置
trace:
enabled: true
stream:
kafka:
binder:
brokers: http://kafka1:port1,http://kafka2:port2,http://kafka3:port3
management:
endpoints:
web:
exposure:
include: bus-refresh
区别就在于将添加总线配置以及配置management将bus-refresh点暴露出来。
3.所有用到配置中心参数的类都需要引入@RefreshScope注解。
4.可以在任意节点上调用http://localhost:7900/actuator/bus-refresh来热刷新配置信息。
5.也可以只刷新部分节点,http://localhost:7900/actuator/bus-refresh?destination=ServiceName即可只刷新指定服务的
配置参数。
这个请求必须是POST请求。