ʻOrg.apache.http.client` Effectuer une requête HTTP à partir du client HTTP généré en utilisant Je souhaite réessayer en fonction de l'état HTTP renvoyé (200, 404, 503, etc.) Il y a un temps à dire et la solution à ce moment-là.
(Le membre du projet m'a dit qu'il était difficile d'écrire la version, donc j'écrirai la version de travail pour le moment.)
Il a été confirmé qu'il fonctionne dans l'environnement en utilisant!
Au lieu d'un mémorandum, en espérant qu'un jour cela aidera quelqu'un.
RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(timeout).build();
final HttpClientBuilder hcBuilder = HttpClientBuilder.create()
.setDefaultRequestConfig(requestConfig)
//Réessayer lorsqu'une erreur HTTP IO se produit
.setRetryHandler(new DefaultHttpRequestRetryHandler())
//Le fait de réessayer ou non dépend de la valeur booléenne de retryRequest au moment de la requête HTTP
.setServiceUnavailableRetryStrategy(new ServiceUnavailableRetryStrategy() {
@Override
public boolean retryRequest(
final HttpResponse response, final int executionCount, final HttpContext context) {
int statusCode = response.getStatusLine().getStatusCode();
return Arrays.asList(RETRY_HTTP_STATUSES).contains(statusCode)
&& executionCount < MAX_RETRY_COUNT;
}
@Override
public long getRetryInterval() {
return RETRY_INTERVAL_MILLI_SEC;
}
});
return hcBuilder.build();
Inutile de dire, mais si vous complétez
-RETRY_HTTP_STATUSES
est un tableau de ʻInteger type, et définit le groupe de codes d'état HTTP
que vous voulez réessayer.
・ MAX_RETRY_COUNT
définit le nombre maximum de tentatives
.
-RETRY_INTERVAL_MILL_SEC
définit la milliseconde de l'intervalle de relance
.
Maintenant, même un programmeur copier / coller peut écrire un processus de nouvelle tentative!
Recommended Posts