问题:spring.application.name和eureka.instance.appname都可以设定注册在Eureka中的服务名,但是若用eureka.instance.appname设定而不设置spring.application.name,从Eureka服务器中却无法获取服务信息。不管是用Ribbon、Feign还是DiscoveryClient对象都不能正确获取。
spring.application.name会给三个属性appname、virtualHostName、secureVirtualHostName填值,但是现在版本的Eureka这个操作被前置了,也就是我们单独设定的appname会将值再次更新,这就造成了实际appname、virtualHostName两项属性不匹配的问题,因此就无法从appname配置的服务名获取实例了。
正确的做法有两种:
使用spring.application.name,不配置eureka.instance.appname,一劳永逸
对eureka.instance.appname和eureka.instance.virtual-host-name都进行配置,设定为相同的值,就可以用负载均衡器获取实例了。