我从这里浏览了链接,并得到以下答案:获得NoHttpResponseException以进行负载测试
那使我走上了正确的道路。要稍微更新一下答案,这里是使用当前http-client 4.5 API的解决方案:
private final HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory(createHttpClient());
private CloseableHttpClient createHttpClient() {
return HttpClients.custom().setRetryHandler((exception, executionCount, context) -> {
if (executionCount > 3) {
LOGGER.warn("Maximum tries reached for client http pool ");
return false;
}
if (exception instanceof org.apache.http.NoHttpResponseException) {
LOGGER.warn("No response from server on " + executionCount + " call");
return true;
}
return false;
}).build();
}
我在那里也使用spring-web,所以我将客户端用作RestTemplate工厂的参数,因为我希望在RestTemplate中使用它。