Version: Next

Config 手动刷新

在远程 Git 仓库更新配置之后

  • 避免 Config Client 3355 每次都要重启才能应用新配置的问题
  • 确保 Config Client 3355 引入了 actuator Maven 依赖
  • 修改 YML,暴露 actuator 监控端口
bootstrap.yml
server:
port: 3355
spring:
application:
name: config-client
cloud:
#Config客户端配置
config:
label: master #分支名称
name: config #配置文件名称
profile: dev #读取后缀名称 上诉3个综合就是 master分支上 config-dev.yml
uri: http://localhost:3344 # spring cloud config server uri
eureka:
client:
service-url:
defaultZone: http://eureka7001.com:7001/eureka/
#暴露 actuator 监控端点 让配置修改可以被监控
management:
endpoints:
web:
exposure:
include: "*"
  • 修改 Controller,添加 @RefreshScope 注解
Controller
@RestController
@RefreshScope
public class ConfigClientController {
@Value("${config.info}") // 与远程 git 仓库上 yml 文件中的属性一致,就读取这个配置属性
private String configInfo;
@GetMapping("/configInfo")
public String getConfigInfo() {
return configInfo;
}
}
手动刷新

做了这些以后,3355 依然不能动态刷新远程 Git 仓库上的新配置

  • 需要有人用 POST 请求手动刷新 3355
  • Post 请求 http://localhost:3355/actuator/refresh

自动刷新

  • 手动刷新太蠢了
  • 问题一:有 100 个微服务,刷到吐
  • 问题二:更新 部分 微服务的配置,手动挑选出这些微服务,挑吐了
  • 为了解决这些问题,需要使用:Spring Cloud Bus 消息总线