2017-01-02 8 views
0

ここに私のシナリオがあります: 私のマイクロサービスは、そのコンフィグレーションの変更について中央のconfサーバから通知されます。部分的な更新または完全な更新が可能です。 関連する豆に@RefreshScopeマークを使用します。問題はマークされた豆を更新する方法です、私はそれらをリロードすることを意味します。 明確にする:Spring Cloudから、私はRefreshScopeのみを使用します。RefreshScopeとしてマークされたBeanを更新する

アイデア?

答えて

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

あなたが変更の影響を受けるさまざまなコンポーネントを持っている場合、それはリポジトリに自分の設定を維持するために良いことだと、あなたは、すべての影響を受けるコンポーネントがにされたさわやかな状況のためのパブリッシュ・サブスクライブ・モデルを追加することができます設定が変更された結果、リポジトリから発行されたイベントを購読します。

とさわやかな文脈のために、我々は2つのオプションがあります。

  1. ポスト要求によって、あなたのアプリのヒットリフレッシュエンドポイントを。
  2. RefreshEndpoint Beanをオートワイヤリングして取得し、refreshEndpoint.refresh()を適用します。実行時にコンテキストが更新されます。

両方の解決策では、関心のある豆を@RefreshScopeでマークします。

関連する問題