環(huán)境中配置了 Eureka ,在發(fā)起 HttpClient 請求時(shí)奠骄,遇到「eureka No instances available for ...」的問題。這是由于發(fā)起請求的目標(biāo)域名在 Eureka 服務(wù)器中沒有實(shí)例。
查 資料 蚤认,有兩種解決辦法:
- 不要使用 netflix 這套路由服務(wù)(這居然也是一種辦法么= =)凹蜈;
- 不要使用默認(rèn)的 RestTemplate 來發(fā)起請求限寞,應(yīng) new 一個(gè)新的 RestTemplate 來操作。
具體實(shí)現(xiàn)代碼如下:
JSONObject json = new JSONObject(sendParam);
HttpHeaders headers = new HttpHeaders();
MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
headers.setContentType(type);
HttpEntity<String> reqE = new HttpEntity<String>(json.toString(), headers);
RestTemplate restTemplate = new RestTemplate();
ResponseEntity<Map> result = restTemplate.exchange(url, HttpMethod.POST, reqE, Map.class);
待考:
據(jù)說會(huì)有在 Eureka 上生成一個(gè)新實(shí)例的副作用仰坦。
最穩(wěn)妥的方法還是配置 potal 履植。