我有一个简单的设置,包括一个 Eureka 服务注册服务器、一个公共 API 服务和一个使用 RestTemplate 从公共 API 调用的服务。 Eureka 告诉我服务已成功注册,但是当我调用该服务时
@Service
public class MyServiceService {
@Autowired
private RestTemplate restTemplate;
private final String serviceUrl;
public MyServiceService() {
this.serviceUrl = "http://MY-SERVICE";
}
public Map<String, String> getTest() {
Map<String, String> vars = new HashMap<>();
vars.put("id", "1");
restTemplate.setRequestFactory(new HttpComponentsClientHttpRequestFactory());
return restTemplate.postForObject(serviceUrl+"/test", "", Map.class, vars);
}
}
我得到以下异常
Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed;
nested exception is org.springframework.web.client.ResourceAccessException: I/O error on POST request for "http://MY-SERVICE/test": MY-SERVICE;
nested exception is java.net.UnknownHostException: MY-SERVICE] with root cause java.net.UnknownHostException: MY-SERVICE
我创建了一个示例项目来说明我的设置,也许有人可以看一下它并告诉我我的设置有什么问题。
https://github.com/KenavR/spring-boot-microservices-example
谢谢
原文由 KenavR 发布,翻译遵循 CC BY-SA 4.0 许可协议
正如 patrick-grimard 所建议的那样,切换到 Brixton 并需要更改代码来解决问题。工作解决方案在 Github 上。
还将发布的
id
从请求参数更改为请求正文,这也改变了我将其添加到请求的方式。服务端点
Rest模板创建
呼叫服务