现在如果修改配置Config客户端不会获取最新的配置必须要重新启动才可以,需要使用Config客户端动态刷新功能。

1.修改cloud-config-client-3355模块

1.pom.xml文件引入actuator监控

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-actuator</artifactId>
  4. </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)"}