2017-04-04 7 views
2

Spring Cloud Eurekaインスタンスが開始されると、静的に(がapplication.yml)、動的に(たとえばEurekaInstanceConfigBeanを使用して)いくつかのインスタンスのメタデータを定義できます。しかし、いったんインスタンスが登録されると、このメタデータはconfig beanを更新した後もEurekaで更新されなくなります。 Eurekaで動的に更新されるメタデータを定義する方法はありますか?だからユーレカは各インスタンスのキーバリューストレージのような働きをします。ユーレカのインスタンスメタデータを動的に更新する

答えて

3

ユーリカのクライアントからメタデータを更新する場合は、com.netflix.appinfo.ApplicationInfoManagerオブジェクトを使用し、registerAppMetadata(Map<String, String>)を呼び出してください。 もしそうなら、この情報はEureka Serverで通常すぐに、または少なくとも30秒で更新されます.DIを使用してApplicationInfoMangerのインスタンスを取得できます。

他のサービスインスタンスのメタデータを更新したい場合は、以下のようなeurekaサーバーにREST APIを呼び出してください。

PUT /eureka/apps/appID/instanceID/metadata?key=value 
+0

ありがとうございました!まさに私が探していたもの。この30秒の間隔をより小さい間隔に調整できるかどうか分かりますか? – FVlad

+1

最初に、インスタンス情報のレプリケーションの間隔を調整できます。ユーレカクライアント自体からユーレカサーバーへの変更を報告する期間に影響します。 'eureka.client.initialInstanceInfoReplicationIntervalSecond'、' eureka.client.instanceInfoReplicationIntervalSeconds'です。しかし、私が上記のように、ユーレカのクライアントからの変更は通常、オンデマンドでサーバーに報告されます。これらの値を調整することはそれほど効果的ではありません。 –

+1

他のユーリカのクライアントからのデータ変更(メタデータを含む)を受け取りたい場合は、それらの間に多くのキャッシュがあります - ユーリカサーバーの応答キャッシュ、ユーリカのクライアントキャッシュ。したがって、これらの変更を他のユーリカのクライアントから迅速に受け取るには、他のオプションも調整する必要があります。 –

関連する問題