1. 程式人生 > >eureka學習問題-使用服務名呼叫報錯

eureka學習問題-使用服務名呼叫報錯

問題:

    在註冊中心註冊了兩個方法,                                                                                                                                                    

    但是無法使用服務名呼叫相應的方法

@GetMapping("/user/{id}")
    public User findById(@PathVariable("id") String id) {
        return this.restTemplate.getForObject("http://MICROSERVICE-PROVIDER-USER/" + id, User.class);
    }

 異常:

java.net.UnknownHostException: MICROSERVICE-PROVIDER-USER
	at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:184) ~[na:1.8.0_102]
	at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172) ~[na:1.8.0_102]
	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) ~[na:1.8.0_102]
	at java.net.Socket.connect(Socket.java:589) ~[na:1.8.0_102]

解決方案:

    在restTemplate的bean上新增@LoadBalance負載均衡標籤。

原因:

    RestTemplateCustomizer會給會將標有@LoadBalance的RestTemplate新增一個攔截器,攔截器的作用就是對請求的URI進行轉換獲取到具體應該請求哪個服務例項ServiceInstance。

    @LoadBalance的本質上一個注入標籤,具體檢視