Eureka服务发现期间的java.net.UnknownHostException

时间:2016-07-11 15:35:43

标签: spring-boot spring-cloud netflix-eureka

根据此博客https://spring.io/blog/2015/07/14/microservices-with-spring

能够毫无问题地运行应用程序。按此顺序:

  • java -jar microservice-demo-0.0.1-SNAPSHOT.jar registration 1111
  • java -jar microservice-demo-0.0.1-SNAPSHOT.jar accounts 2222
  • java -jar microservice-demo-0.0.1-SNAPSHOT.jar web 3333

但是当尝试通过使用http://localhost:3333/网址访问任何帐户服务端点(例如http://ACCOUNTS-SERVICE)的网络应用程序(http://ACCOUNTS-SERVICE/accounts/123456789)点击任何服务时,我收到错误响应:

Response Status: 500 (Internal Server Error)
Cause: org.springframework.web.client.ResourceAccessException I/O error on GET request for "http://ACCOUNTS-SERVICE/accounts/123456789": ACCOUNTS-SERVICE; nested exception is java.net.UnknownHostException: ACCOUNTS-SERVICE

当我向网络服务器而不是http://localhost:2223/提供帐户服务的真实地址(http://ACCOUNTS-SERVICE)时,一切正常,但在这种情况下没有服务发现。

源代码存储在:https://github.com/paulc4/microservices-demo

1 个答案:

答案 0 :(得分:13)

此问题是由于Restrimplate不再在Brixton发布系列(Spring Cloud 1.1.0.RELEASE)中自动创建,因此RestTemplate无法使用服务发现正确解析http://ACCOUNTS-SERVICE网址服务器

在使用@LoadBalanced声明RestTemplate bean之后能够解决此问题,如下所示:

@Bean
@LoadBalanced
public RestTemplate restTemplate() {
    return new RestTemplate();
}