当Spring Cloud Eureka实例启动时,我可以静态定义一些实例元数据(在eureka.instance.metadataMap.*
中的application.yml
中)或动态定义(例如,使用EurekaInstanceConfigBean
)。但是一旦注册了实例,在更新配置bean之后,这个元数据就不再在Eureka中更新了。
有没有办法定义一些将在Eureka中动态更新的元数据?因此,Eureka的工作方式类似于每个实例的键值存储。
答案 0 :(得分:7)
如果您想更新eureka客户端中的任何元数据,请使用com.netflix.appinfo.ApplicationInfoManager
对象并致电registerAppMetadata(Map<String, String>)
。
如果是这样,此信息将在Eureka Server中更新,通常很快或至少在30秒内更新。您可以使用DI获取ApplicationInfoManger的实例。
如果要更新其他服务实例的元数据,只需调用以下REST API到eureka服务器即可。
PUT /eureka/apps/appID/instanceID/metadata?key=value