我有以下代码供rest客户端访问其余服务:
@Override
public String putDeal(String deal) throws RestException {
String responseStr = null;
String restUrl = RestPropertyUtil.getRestUrl();
STATIC_LOGGER.info("REST restUrl: " + restUrl);
if (null != deal) {
HttpEntity<Object> request = new HttpEntity<Object>(deal.getBytes(Charset.forName(UTF8)), getHttpHeaders(false));
ResponseEntity<String> response = restTemplate.exchange(restUrl, HttpMethod.PUT, request, String.class);
if (response.getStatusCode() == HttpStatus.OK) {
responseStr = response.getBody();
} else {
STATIC_LOGGER.error("RestException: Request could not be completed successfully.", response.getHeaders().toString());
throw new RestException("RestException: Request could not be completed successfully.");
}
}
return responseStr;
}
在50个休息请求中(在12小时内,每个请求大约需要5秒到最多1分钟才能完成),45个从其余服务器返回,剩下5个从未响应。
当我问Rest Service开发人员时,他确认这5个请求来到了他们的服务器(在服务方法开始时从Log验证)但是他没有看到他们的服务出来(在结束时)服务方法)因此没有响应来自其他客户。
您是否认为这需要由其他服务团队进行调查,或者我可以从其他客户端的角度做什么(比如使用HttpClient和RestTemplate实现连接池)可以解决这个问题?
仅供参考:当我从Firefox中的其他客户端插件尝试此服务时,它始终会得到响应。所以我认为这可能与其他客户端代码有关。