现在如果修改配置Config客户端不会获取最新的配置必须要重新启动才可以,需要使用Config客户端动态刷新功能。
1.修改cloud-config-client-3355模块
1.pom.xml文件引入actuator监控
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
2.修改 bootstrap.yml,暴露监控端口
server:
port: 3355
spring:
application:
name: config-client
cloud:
config: #Config客户端配置
enabled: true #是否启用配置中心功能,默认true是开启的
label: master #githup/gitee分支名称
name: config #配置文件名称
profile: dev #读取后缀名称 ,根据上面三个配置:master分支上的config-dev.yml的配置文件被读取http://localhost:3344/master/config-dev.yml
uri: http://localhost:3344 #配置中心地址
eureka:
client:
service-url:
defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka
# 暴露监控端点
management:
endpoints:
web:
exposure:
include: "*"
3.在ConfigClientController中添加 @RefreshScope 注解刷新配置
@RefreshScope//刷新配置
@RestController
public class ConfigClientController {
@Autowired
private GitConfigData gitConfigData;
@GetMapping("/configInfo")
public GitConfigData getConfigInfo() {
return gitConfigData;
}
}
2.启动测试
启动Eureka注册中心:cloud-eureka-server7001,cloud-eureka-server7002
启动配置中心:cloud-config-center-3344
启动Config客户端:cloud-config-client-3355
修改githup/gitee仓库中的配置文件
data:
port: 9998
name: "测试123"
info: "config info for dev(master)"
浏览器输入:http://localhost:3355/configInfo
返回如下内容,发现并没有返回最新修改的配置
{"port":"9999","name":"测试","info":"config info for dev(master)"}
需要手动发送一个POST请求,刷新配置
curl -X POST "http://localhost:3355/actuator/refresh"
再次输入:http://localhost:3355/configInfo
返回如下内容,发现已经成功获取到最新修改的配置了,避免了服务的重启
{"port":"9998","name":"测试123","info":"config info for dev(master)"}