我想知道是否存在一种让Eureka客户端知道其实际instanceId的方法(我正在寻找一种在同一主机和分布式conf上均可使用的解决方案)。

到目前为止,我使用的是手动定义的eureka.instance.instance-id: ${spring.application.name}:${random.int},但是每次访问它的值时,由于随机性,都会得到一个新值。因此,它与注册时生成并提供给服务器的总是不同的。

最佳答案

是的,RandomValuePropertySource是无状态的,因此,每次访问该属性时,您都会获得新的价值。

首先,您可能要考虑使用host:port作为instanceId,那里没有随机性。

如果这还不够好,请注入EurekaInstanceConfigBean并获取instanceId。 (需要一些测试)

最好的方法是在SpringApplication.run之前自行设置instance-id具有系统属性。

08-19 12:54