繁体   English   中英

使用 RestTemplate 的尤里卡客户端的 UnknownHostException

[英]UnknownHostException for Eureka Client using RestTemplate

我有一个 Eureka 服务器和两个用作 Eureka 客户端的微服务的简单设置。 一个微服务应该能够调用另一个。 在 Eureka 服务器的 Web 界面上,我可以看到该服务使用我在 application.properties 中设置的名称“my-service”注册。

我已经在 stackoveflow 上阅读了几个关于此的问题。 答案几乎总是将注释@LoadBalanced 添加到 Autowired RestTemplate。 不幸的是,我已经这样做了,但我仍然得到 UnknownHostException。

微服务 - RestTemplate UnknownHostException

spring-boot Autowired DiscoveryClient RestTemplate UnknownHostException

我的 Bean 在配置中:

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

我的微服务调用 my-service:

public class MyCallingService {

    @Autowired
    private RestTemplate restTemplate;

    public JsonArray makeCall() {
    ResponseEntity<JsonArray> response = this.restTemplate
                .getForObject("http://my-service/api/call", JsonArray.class);
        return response.getBody();
    }
}

当我从一个微服务调用另一个微服务时,我的服务收到 UnknownHostException 异常。

编辑:我错过了一些信息,我认为它不会导致这种行为,但事实证明确实如此:我在另一个用@PostConstruct 注释的 bean 方法中调用 makeCall()。 如果我在依赖注入后调用 makeCall() ,我不会得到 UnknownHostException 并且我可以进行调用。 有人可以争论为什么会发生这种情况吗?

如果你使用的是 spring boot 和 spr,那么使用这个

  @Bean
  @LoadBalanced
  public RestTemplate restTemplate(RestTemplateBuilder builder) {
    return builder.build();
  }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM