我有两个微服务,我希望那个消耗掉另一个,但我得到了这个错误:
用于servlet [dispatcherServlet]的Servlet.service()与path的上下文 []引发异常[请求处理失败;嵌套异常是 org.springframework.web.client.ResourceAccessException:I / O错误 GET请求" http://localhost:8080/testMicroservicio":连接 拒绝(连接拒绝);嵌套异常是 java.net.ConnectException:连接被拒绝(连接被拒绝)] 有根本原因
java.net.ConnectException:拒绝连接(拒绝连接)
但是如果我在浏览器中执行url,它可以正常工作,但如果微服务想要访问其他微服务,我就有这个错误。
有人知道为什么?
我正在使用:RestTemplate
我放了一些代码:
@RestController
public class MicroServiceController {
private final AddressService service;
private static final String URL_API_INFO = "http://localhost:8080/testMicroservicio";
private RestTemplate restTemplate = new RestTemplate();
private final static Logger log = Logger.getLogger("com.bernanetwork.web.controller.MicroServiceController");
@Autowired
public MicroServiceController(AddressService service) {
this.service = service;
}
@RequestMapping(value = "/micro-service-test")
public String consumidor() throws Exception {
log.info("----------------------------------------------------------------------------------------");
log.info("-------------------------Iniciando método consumidor------------------------------------");
log.info("----------------------------------------------------------------------------------------");
ResponseEntity <PruebasMicroservicio[]> response = restTemplate.getForObject(URL_API_INFO, PruebasMicroservicio[].class);
Arrays.asList(response.getBody()).forEach(info -> log.info("---"+info));
return "ok";
}
这些微服务在Docker中运行
非常感谢。
答案 0 :(得分:1)
问题是您正在尝试使用localhost
从一个服务连接到另一个服务。这不起作用,因为每个容器都有自己的IP,localhost只会指向请求的调用者。
标准Docker连接容器的方法是将它们连接到Docker网络。
docker network create mynet
docker run --network mynet --name container-1 ...
docker run --network mynet --name container-2 ...
现在,container1可以使用http://container-2:8080
与container2进行通信。