2017-01-02 26 views
0

以下是我的方案: 我的微服務從中央conf服務器獲取有關其配置更改的通知。它可以是部分更新,也可以是完整的。 我在相關的bean上使用@RefreshScope標記。問題是如何更新標記的bean,我的意思是重新加載它們。 只是爲了澄清:從Spring雲中我只使用RefreshScope。更新標記爲RefreshScope的豆類

任何想法?

回答

0
  1. 在項目中添加依賴項org.springframework.boot:spring-boot-starter-actuator
  2. 通過呼叫refresh端點刷新配置。

例如,您可以像下面那樣配置管理端點。 curl -X POST http://localhost:8001/manage/refresh將觸發刷新更改的配置。

management: context-path: /manage port: 8001 security.enabled: false

+0

謝謝。但它不能解決我的問題。它會刷新,如果我的配置在「存儲庫」,但我的情況是不同的,因爲我的應用程序獲取更改的參數,從現在開始它應該更新它們在所有相關的地方。可能是我應該先更新env,然後再打電話刷新? – Oleg

0

如果您有被變化的影響不同的組件,然後這是很好的保持你的資料庫配置,然後你可以添加清涼的背景下發布 - 訂閱模式中,所有受影響的組件是作爲配置更改的結果,訂閱由您的存儲庫發佈的事件。

而對於清爽情況下,我們有兩種選擇:由POST請求您的應用程序的

  1. 命中刷新端點。
  2. 通過自動裝配獲取RefreshEndpoint bean,然後應用refreshEndpoint.refresh()。這將在運行時刷新上下文。

在這兩個解決方案中,通過@RefreshScope標記感興趣的bean。