为什么我不能使用虚拟主机名来获取我的微服务?

时间:2017-01-02 15:17:08

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

我的eureka中有一个提供者,如下所示:

enter image description here

然后我使用restTemplate来获取消息,如下所示:

  @Autowired
RestTemplate restTemplate;

@RequestMapping("getInfo")
public String getMessage(){
    return restTemplate.getForObject("http://microservice_provider/user/getUserInfo", String.class);
}

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

}

}

但它永远不会奏效。它告诉我:

enter image description here

那么,我能做些什么来成功使用?

2 个答案:

答案 0 :(得分:0)

创建一个RestTemplate bean并使用@LoadBalanced注释你的bean。

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

这样,您可以使用微服务microservice_provider的名称作为网址的一部分。

String remotemsg = restTemplate.getForObject("http://microservice_provider/user/getInfo",String.class);

答案 1 :(得分:0)

在网址"http://microservice_provider"中,主机名microservice_provider不是有效的主机名,因为下划线_在主机名中无效。更改名称,它将起作用。最近有一项修改NPE并带有明确的错误信息。