Frühjahr RestTemplate Verbindungs-Timeout funktioniert nicht

Ich versuche zu konfigurieren, time-out, wenn externe web-service-Aufruf. Ich bin Aufruf externer web service mit Spring-Rest-Vorlage in meinem Dienst.

Für Verbindungs-timeout-Prüfung Zweck, den externen web-Dienst beendet und application server ist down.

Ich konfiguriert haben 10 Sekunden timeout, aber leider bekomme ich connection refused exception nach einem zweiten.

try {   
    final RestTemplate restTemplate = new RestTemplate();

    ((org.springframework.http.client.SimpleClientHttpRequestFactory)
        restTemplate.getRequestFactory()).setReadTimeout(1000*10);

    ((org.springframework.http.client.SimpleClientHttpRequestFactory)
        restTemplate.getRequestFactory()).setConnectTimeout(1000*10);

    HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);

    HttpEntity<String> entity = new HttpEntity<String>(reqJSON, headers);

    ResponseEntity<String> response = restTemplate.exchange(wsURI, HttpMethod.POST, entity, String.class);

    String premiumRespJSONStr = response.getBody();
}

Bitte korrigieren Sie mein Verständnis wenn.

sind Sie in der Lage zu schließen, ohne die Konfiguration timeout?
Vaibs, Nein. für Testzwecke habe ich nicht starten, externen web-service. Angegebenen time-out nicht funktioniert.
Vaibs, wenn der externe Dienst ist, setReadTimeout arbeitet. wenn der externe Dienst down ist, setConnectTimeout nicht funktioniert. das ist, immer Ausnahme nach einer Sekunde ist es nicht, wartet 10 Sekunden, die ich konfigurieren.
Wenn Ihr service ist down, warum rest templte poll für 10 Sek.Es wird direkt werfen einige Ausnahme/Fehler
Es gibt zwei Szenarien: 1) der remote-server ist up, aber es hat länger gedauert als connectTimeout um eine Verbindung zu erhalten, und 2) der server ist down und somit nicht erreichbar. Für erstere ist das connectTimeout arbeiten, sollte für letztere würde es keinen Sinn machen, weil Ihre Netzwerk-client, der bereits weiß, ist nicht erreichbar, und es würde keinen Sinn machen, Sie warten, bis comnectTimeout Ihnen sagen, so.

InformationsquelleAutor Easy2DownVoteHard2Ans | 2017-05-11

Schreibe einen Kommentar