我正在使用準系統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!
可以通過使用代碼和獨立的問題解釋一下嗎? – wthamira
添加的代碼示例 – iychche
@ThamiraLakmal我沒有看到您昨天發佈的解決方案。你刪除它了嗎? – iychche