2017-08-16 15 views
1

Ich versuche zu verstehen, die ReadTimeout auf RestTemplate verfügbar, was ist das genau?Spring Rest Vorlage ReadTimeOut

Ist es die gesamte Zeit, die die Anfrage dauern kann, bevor wir die Ausnahme für die Zeitüberschreitung erhalten?

Antwort

2

Sie können eine Lese Timeout auf einem RestTemplate wie folgt definieren:

HttpComponentsClientHttpRequestFactory clientRequestFactory = new HttpComponentsClientHttpRequestFactory(); 
// set the read timeot, this value is in miliseconds 
clientRequestFactory.setReadTimeout(500); 

RestTemplate restTemplate = new RestTemplate(clientRequestFactory); 

ein Readtimeout von X Millis Gegeben, jede Anfrage durch diese RestTemplate Instanz gemacht, die länger dauert als X Millis führt zu a ResourceAccessException, Umhüllen java.net.SocketTimeoutException mit der Ausnahmebedingungsnachricht: "Zeitüberschreitung gelesen".

Der Timeout tatsächlich wird durch die Buchse innerhalb der HttpClient Instanz implementiert, die durch die RestTemplate so gewickelt ist, die Uhr beginnt, wenn die Anforderung zuerst, dass die Buchse trifft und stoppt, wenn je nachdem, welche von ihnen an erster Stelle: die Anforderung abgeschlossen ist oder das Readtimeout ist erreicht.

Dies bedeutet, dass jede Anfrage, die länger als die konfigurierte readTmeout dauert, mit einer Timeout-Ausnahme fehlschlägt.

2

Soweit ich wusste, In restTemplate haben wir 3 Arten von Timeouts 1) ConnectionRequestTimeout Dies ist Timeout in Millis für die Verbindung von Connectionmanager

bekommen

2) Connection Dies ist Timeout in Millis zur Herstellung einer Verbindung zwischen Quelle und Ziel

3) ReadTimeout Dies ist das Zeitlimit in Millis, das erwartet, dass die Antwort/das Ergebnis vom Zielendpunkt zurückgegeben werden soll.