为什么springcloud配置中心服务端获取到最新配置,但客户端端没有拉取最新信息? 20C

最近在练习springcloud项目,在练习config配置中心时,已经实现了在GitHub上更新配置,配置中心服务端拿到了配置,但客户端并没有去拉取配置。

环境

jdk:1.8

springboot:2.0.6.RELEASE

SpringCloud:Finchley.SR2

服务端pom如下

<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-config-server</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-config-monitor</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        <version>2.0.2.RELEASE</version>
    </dependency>

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-bus-amqp</artifactId>
        <version>2.0.0.RELEASE</version>
    </dependency>

    </dependencies>

配置如下

server:
  port: 8888
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/
  instance:
      prefer-ip-address: true

spring:
  application:
    name: config
  cloud:
    config:
      server:
        git:
          uri: https://github.com/*****/seekbean.git
          username: *********
          password: *********
          basedir: /E:/MyDownloads/springboot
  rabbitmq:
    host: localhost
    port: 5672
    username: guest
    password: guest

management:
  endpoints:
    web:
      exposure:
        include: "*"

客户端pom如下

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

<dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-config-client</artifactId>
</dependency>

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-bus-amqp</artifactId>
    <version>2.0.0.RELEASE</version>
</dependency>

客户端配置如下

spring:
  application:
    name: orderapi
  cloud:
    config:
      discovery:
        enabled: true
        service-id: CONFIG
      profile: dev
  rabbitmq:
      host: localhost
      port: 5672
      username: guest
      password: guest
eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/
  instance:
    prefer-ip-address: true
management:
  endpoints:
    web:
      exposure:
        include: "*"
  endpoint:
    bus-refresh:
      enabled: true

当我在GitHub上编辑更新我的配置时,会向我的config的服务端发送请求,webhooks配置为

图片说明

每次更新之后配置,我的config服务都能拿到最新配置

图片说明

但客户端却没有主动去拉取配置,无法得到实时的配置信息

图片说明

客户端代码如下

@Data
@Component
@ConfigurationProperties("girl")
@RefreshScope
public class TestConfig {

    private String name;
    private String age;
}
@RestController
@RequestMapping("/girl")
public class EnvController {

    @Autowired
    private TestConfig testConfig;

    @GetMapping("print")
    public String print(){
        return "name:"+testConfig.getName()+",age:"+testConfig.getAge();
    }

}

当我在push我的配置时,config服务端拿到了配置,其控制台也输出了相应信息,但客户端的控制台却毫无反应,求大神帮忙看看,不胜感激

4个回答

什么意思 你这是要实现本地代码和git上的代码热更新吗??

chanred
chanred 通过在GitHub上更新我的配置文件,GitHub会通过webhooks向我的配置中心发送一条post请求,我的配置中心就能拿到最新的配置信息,现在的问题是配置中心服务端拿到了,但客户端没拿到
9 个月之前 回复
chanred
chanred 只是拿配置文件
9 个月之前 回复

1,请问你config服务端拿配置的代码是怎么写的?
2,client端使用成员变量是可以动态拿到git上更新的值
例如:
图片说明

chanred
chanred 这样也可以拿到的
9 个月之前 回复

需要刷新配置的地方,增加注解
@RefreshScope
访问验证 post方式:
/ctuator/bus-refresh

chanred
chanred 注解是加了的,访问验证的路由我用的是spring-cloud-config-monitor这个
8 个月之前 回复

SpringCloud Config Bus webhook 只能刷新config server 不能刷新config client
https://github.com/spring-cloud/spring-cloud-bus/issues/124 中有提到

https://www.cnblogs.com/yfzhou/p/10203573.html

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!

相似问题