2014-06-14 11 views
5

Miałem nadzieję poradzić sobie z tą sytuacją, gdzie chcę to zrobić ponownie z opóźnieniem, ale wydaje się, że opóźnienie że mogę ustawić w ServiceUnavailableRetryStrategy zrobił nastąpić:HttpClient: Jaka jest różnica między ServiceUnavailableRetryStrategy i HttpRequestRetryHandler?

19: 42: 29.046 [scheduler- 15] Informacje oahttp.impl.execchain.RetryExec - wyjątek we/wy (org.apache.http.NoHttpResponseException) złowionych gdy przetwarzania żądanie {} ->http://testing.com:80: serwer cel nie reagować 19: 42: 29,049 [scheduler-15] INFO oahttp.impl.execchain.RetryExec - Ponowna próba wysłania żądania do {} ->http://testing.com:80

Mam zestaw ServiceUnavailableRetryStrategy i HttpRequestRetryHandler. Z obu wydaje się, że tylko ServiceUnavailableRetryStrategy ma opcję opóźnienia, gdzie nie widzę żadnych opcji opóźnienia dla httpRequestRetryHandler.

Tak więc w przypadku wyjątku NoHttpResponseException powyżej, który z nich jest rzeczywiście używany? I jaka jest różnica między tymi dwoma?

Odpowiedz

6
  • HttpRequestRetryHandler reprezentuje strategię określania, czy żądanie jest bezpieczne ponownie w przypadku wystąpienia błędu I/O (brak odpowiedzi HTTP został odebrany z serwera).

  • Usługa niedostępnaRetryStrategy reprezentuje strategię określającą, czy żądanie powinno zostać ponowione po pewnym czasie w przypadku tymczasowo niedostępnej usługi (status odpowiedzi 503).

W wersji 5.0 dwa interfejsy zostaną prawdopodobnie zastąpione jednym interfejsem strategii.

Powiązane problemy