[JAVA] Comment faire en sorte que HttpClient réessaye HttpRequest au statut HTTP arbitraire dans org.apache.http.client

ʻ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

Comment faire en sorte que HttpClient réessaye HttpRequest au statut HTTP arbitraire dans org.apache.http.client
Comment faire une méthode de jugement pour rechercher n'importe quel caractère dans le tableau
Comment rendre une image partiellement transparente avec le traitement
Comment faire un pot ombré
Comment modifier la valeur de paramètre de application.properties au moment du démarrage dans Spring Boot
Java - Comment créer JTable
[Rails] Comment faire des graines
Comment créer un fichier jar sans dépendances dans Maven
Comment appeler plusieurs noms à la fois dans la même catégorie