下面列出了怎么用org.apache.http.impl.client.DefaultBackoffStrategy的API类实例代码及写法,或者点击链接到github查看源代码。
/**
* Makes an HTTP call to fetch all routing data.
* @return
* @throws IOException
*/
private static String getAllRoutingData(String msdsEndpoint) throws IOException {
// Note that MSDS_ENDPOINT should provide high-availability - it risks becoming a single point
// of failure if it's backed by a single IP address/host
// Retry count is 3 by default.
HttpGet requestAllData = new HttpGet(
msdsEndpoint + MetadataStoreRoutingConstants.MSDS_GET_ALL_ROUTING_DATA_ENDPOINT);
// Define timeout configs
RequestConfig config = RequestConfig.custom().setConnectTimeout(HTTP_TIMEOUT_IN_MS)
.setConnectionRequestTimeout(HTTP_TIMEOUT_IN_MS).setSocketTimeout(HTTP_TIMEOUT_IN_MS)
.build();
try (CloseableHttpClient httpClient = HttpClients.custom().setDefaultRequestConfig(config)
.setConnectionBackoffStrategy(new DefaultBackoffStrategy())
.setRetryHandler(new DefaultHttpRequestRetryHandler()).build()) {
// Return the JSON because try-resources clause closes the CloseableHttpResponse
HttpEntity entity = httpClient.execute(requestAllData).getEntity();
if (entity == null) {
throw new IOException("Response's entity is null!");
}
return EntityUtils.toString(entity, "UTF-8");
}
}
/**
* Get a new CloseableHttpClient
*
* @return CloseableHttpClient
*/
public static CloseableHttpClient newHttpClient() {
final SocketConfig socketConfig = SocketConfig.custom()
.setSoKeepAlive(Boolean.TRUE).setTcpNoDelay(Boolean.TRUE)
.setSoTimeout(SOCKET_TIMEOUT_MS).build();
final PoolingHttpClientConnectionManager manager = new PoolingHttpClientConnectionManager();
manager.setDefaultMaxPerRoute(MAX_HOSTS);
manager.setMaxTotal(MAX_HOSTS);
manager.setDefaultSocketConfig(socketConfig);
final RequestConfig requestConfig = RequestConfig.custom()
.setConnectTimeout(CONNECTION_TIMEOUT_MS)
.setCookieSpec(CookieSpecs.IGNORE_COOKIES)
.setStaleConnectionCheckEnabled(Boolean.FALSE)
.setSocketTimeout(SOCKET_TIMEOUT_MS).build();
final CloseableHttpClient client = HttpClients
.custom()
.disableRedirectHandling()
.setConnectionManager(manager)
.setDefaultRequestConfig(requestConfig)
.setConnectionReuseStrategy(
new DefaultConnectionReuseStrategy())
.setConnectionBackoffStrategy(new DefaultBackoffStrategy())
.setRetryHandler(
new DefaultHttpRequestRetryHandler(MAX_RETRIES, false))
.setKeepAliveStrategy(new DefaultConnectionKeepAliveStrategy())
.build();
return client;
}