2017-03-12 19 views
1

我正在使用準系統Spring雲配置服務器和客戶端應用程序進行測試。我執行了一個刷新場景(通過在客戶端應用程序上調用/刷新端點) 在config-server最初關閉後。這是我發現的如果Config-Server在初始啓動過程中出現故障,Spring Config-Client不會刷新

  • 當啓動時config-server無法訪問時,客戶端啓動本地打包的屬性。 (我有與客戶端應用程序捆綁在一起的application.yml中的屬性)
  • 與本地打包版本相比,Git後端具有不同的屬性值。配置服務器知道git中的變化(通過直接連接到配置服務器來確認)
  • 我調出配置服務器並對客戶端應用程序上的/ refresh端點執行POST。
  • 客戶端應用程序不知道來自config-server的新屬性。

在第二個用例

  • 客戶端應用程序啓動並連接到配置服務器的成功。我看到來自config-server的值已被客戶端應用程序成功提取
  • 我在Git中進行更改並調用客戶端應用程序上的/ refresh端點。屬性成功刷新。

此時,如果客戶端應用程序最初啓動時不能成功連接到配置服務器,它看起來像/ refresh不起作用。我這樣做是爲了測試 客戶端應用程序的回退策略,如果客戶端應用程序啓動時無法訪問config-server。 (回退策略是在本地打包的屬性 將在配置服務器在啓動時不可用時使用,如果配置服務器可用則本地屬性將被覆蓋)。任何指向爲什麼這是行不通的,並且我可以做不同的事情?提前致謝。

編輯

服務器的代碼

​​

客戶代碼

@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 

申請。陽明海運

message: 
    greeting: Hello from Local! 

配置Git中(通過配置服務器先得)

message: 
    greeting: Hello from Git-Edited! 
+0

可以通過使用代碼和獨立的問題解釋一下嗎? – wthamira

+0

添加的代碼示例 – iychche

+0

@ThamiraLakmal我沒有看到您昨天發佈的解決方案。你刪除它了嗎? – iychche

回答

2

根據彈簧雲配置文件 -

如果你想到的是,配置服務器在您的應用程序啓動時偶爾可能不可用 ,您可以要求它在失敗後繼續嘗試。 首先你需要設置spring.cloud.config.failFast = true,然後你需要在你的 類路徑中添加spring-retry和spring-boot-starter-aop。默認行爲是重試6次,初始的 退避間隔爲1000ms,後續退避的指數乘數爲1.1。您可以使用spring.cloud.config.retry。*配置屬性來配置這些屬性(及其他) 。

參考 - >http://cloud.spring.io/spring-cloud-static/spring-cloud-config/1.3.1.RELEASE/

相關問題