如果Config-Server在初始启动期间关闭,则Spring Config-Client不会刷新

时间:2017-03-12 08:52:47

标签: spring spring-boot spring-cloud spring-cloud-config

我正在使用准系统Spring云配置服务器和客户端应用程序运行测试。我执行了刷新方案(通过在客户端应用程序上调用/刷新端点) 在config-server最初关闭之后。这是我发现的

  • 启动时无法访问config-server时,客户端启动本地打包的属性。 (我在application.yml中有与客户端应用程序捆绑在一起的属性)
  • 与本地打包版本相比,Git后端具有不同的属性值。配置服务器知道git中的更改(通过直接连接到config-server确认)
  • 我调出config-server并在客户端应用程序上执行POST到/ refresh端点。
  • 客户端应用程序不知道config-server的新属性。

在第二个用例

  • 客户端应用程序启动并成功连接到config-server。我看到来自config-server的值已被客户端应用程序成功提取
  • 我在Git中进行了更改,并在客户端应用程序上调用/ refresh端点。属性已成功刷新。

此时,如果客户端应用程序最初启动而无法成功连接到config-server,则/ refresh似乎不起作用。我这样做是为了测试 如果在客户端应用程序启动时无法访问config-server,则为客户端应用程序提供回退策略。 (后备策略是拥有本地打包的属性 如果config-server在启动时不可用,将使用如果config-server可用,则覆盖本地属性)。任何指向为什么这不起作用的指针 我能做些什么呢?提前谢谢。

修改

服务器-代码

@EnableConfigServer
@SpringBootApplication
public class ConfigServerApplication {

    public static void main(String[] args) {
        SpringApplication.run(ConfigServerApplication.class, args);
    }
}

客户代码

@RestController
@RefreshScope
@Component
public class Greeter {
    @Value("${message.greeting}")
    String greeting;

    @RequestMapping(value = "/",produces = "application/json")
    public List<String> index(){
        List<String> env = Arrays.asList("message.greeting: " + greeting);
        return env;
    }

}

bootstrap.yml(在配置客户端应用程序上)

spring:
  application:
    name: configclient
  cloud:
    config:
      uri: http://localhost:8888
management:
  security:
    enabled: false
logging:
  config: classpath:logback.xml
server:
  port: 8000

application.yml

message:
  greeting: Hello from Local!

在Git中配置(通过配置服务器提供)

message:
  greeting: Hello from Git-Edited!

1 个答案:

答案 0 :(得分:2)

根据spring-cloud-config文档 -

  

如果您希望配置服务器偶尔可用   当你的应用程序启动时,你可以要求它在失败后继续尝试。   首先你需要设置spring.cloud.config.failFast = true,然后你   需要添加spring-retry和spring-boot-starter-aop到你的   类路径。默认行为是使用初始值重试6次   回退间隔为1000ms,指数乘数为1.1   随后的退避。您可以配置这些属性(和其他)   使用spring.cloud.config.retry。*配置属性。

参考 - &gt; http://cloud.spring.io/spring-cloud-static/spring-cloud-config/1.3.1.RELEASE/