我有一个作为Eureka客户端的Spring Boot应用程序。该应用程序需要通过REST调用另一个微服务,并且我希望使用Feign进行此调用。我遇到的问题是,我的应用程序正试图在Eureka中查找服务名称,当它仅在我的应用程序yaml文件中定义时。Feign客户端通过Eureka在yaml中优先化URL
对于难以理解的解释,我表示歉意,希望下面的代码片段有助于澄清。
假死客户端:
@FeignClient("foo")
@Component
public interface FooServiceProxy{
@RequestMapping(value = "/balance", method = RequestMethod.POST, produces = "application/json")
ServiceResponse execute(ServiceRequest serviceRequest);
}
在我的控制器谁调用这个假死客户端时,FooServiceProxy使用@Autowired定义:
@Autowired
private FooServiceProxy fooServiceProxy;
我YAML文件如下:
spring:
application:
name: app-name
server:
port: 8080
foo:
ribbon:
listOfServers: http://hostname:8081/balance
eureka:
client:
fetchRegistry: false
serviceUrl:
defaultZone: http://eurekasrver:8761/eureka/
我的问题是,在运行时,引发以下错误: java.lang.RuntimeException:com.netflix.client.ClientException:负载均衡器没有可用的客户端服务器:foo
有趣的是,如果我从应用程序中删除@EnableEurekaClient注释,则一切正常。我相信我理解这个问题,而不是在yaml文件中查找foo的服务器,因为应用程序是Eureka客户端,Feign直接找Eureka查找服务器ip,然后失败,因为找不到任何服务器。尽管似乎理解了这个问题,但我一直无法在网上找到解决方案或自己想一个解决方案。
任何帮助将不胜感激。 谢谢!