【问题标题】:java.net.UnknownHostException during Eureka service discoveryEureka 服务发现期间的 java.net.UnknownHostException
【发布时间】:2016-11-13 15:13:38
【问题描述】:

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

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

  • java -jar microservice-demo-0.0.1-SNAPSHOT.jar 注册1111
  • java -jar microservice-demo-0.0.1-SNAPSHOT.jar 账户2222
  • java -jar microservice-demo-0.0.1-SNAPSHOT.jar web 3333

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2017-05-04
      • 2020-05-22
      • 2016-05-26
      • 2018-04-15
      • 2017-02-20
      • 2019-05-11
      • 2020-11-12
      • 2018-07-29
      • 2017-05-21
      相关资源
      最近更新 更多