2017-12-12 7 views
0

위해 호출되는 않는 경우. I는 임의의 고장 상태 코드 (4XX 또는 5XX)가되도록에 statusCode의 값을 예상 하였다ServiceUnavailableRetryStrategy 내가 아파치 HttpClient를 4.5.3에서 제공하는 ServiceUnavailableRetryStrategy 인터페이스를 확장 한 아파치 HttpClient를

@Override 
public boolean retryRequest(HttpResponse response, int executionCount, HttpContext context) { 
    int statusCode = response.getStatusLine().getStatusCode(); 
    return false; 
} 

다음

I는 retryRequest 방법을 확장 하였다. 그러나 나는 200 응답 코드를 받게 될 것으로 보인다.

누락 된 것이 있습니까? 문서는이 때문에 결코 서비스를 사용할 수 없음 (503) 응답을 처리하지 않고이 방법으로 얻을 수있는 200 응답을 기대 것을 언급하고있다. 무엇이 잘못 될 수 있는지에 대한 제안이 가장 만족 스럽습니다.

답변

0

ServiceUnavailableRetryStrategy은 프레임 워크가 어떤 종류의 오류 코드도 재 시도해야 하는지를 결정하는 데 사용되는보다 일반적인 인터페이스라고합니다. 이라는 기본 구현이 있으며이 코드는 503 오류 코드 만 검사합니다. 즉, 자체 구현을 제공 할 때 관심있는 특정 오류 코드 (이 경우 503)와 응답을 적절하게 확인해야합니다. 정화 @zaerymoghaddam에 대한

return executionCount <= maxRetries && 
    response.getStatusLine().getStatusCode() == HttpStatus.SC_SERVICE_UNAVAILABLE; 
+0

감사합니다 : 당신이 DefaultServiceUnavailableRetryStrategy의 소스 코드를 선택하면 당신은 명시 적으로 상태 코드를 검사 것을 알 수 있습니다 –