HttpClient:ServiceUnavailableRetryStrategy和HttpRequestRetryHandler有什么区别?

时间:2014-06-14 13:15:30

标签: java apache httpclient apache-httpclient-4.x

我希望能够处理这种情况,我希望它在延迟后重试,但似乎我在ServiceUnavailableRetryStrategy中设置的延迟没有发生:

  

19:42:29.046 [scheduler-15] INFO o.a.http.impl.execchain.RetryExec -   I / O异常(org.apache.http.NoHttpResponseException)捕获的时候   处理请求{} - > http://testing.com:80:目标服务器   未能回应19:42:29.049 [scheduler-15] INFO   o.a.http.impl.execchain.RetryExec - 重试请求   {} - > http://testing.com:80

我同时设置了ServiceUnavailableRetryStrategyHttpRequestRetryHandler。从两者来看,似乎只有ServiceUnavailableRetryStrategy有一个延迟选项,我没有看到httpRequestRetryHandler的任何延迟选项。

所以在上面的NoHttpResponseException的情况下,实际使用了哪一个?这两者有什么区别?

1 个答案:

答案 0 :(得分:6)

  • HttpRequestRetryHandler表示一种策略,用于确定在发生I / O错误(未从服务器收到HTTP响应)时请求是否可安全重试。

  • ServiceUnavailableRetryStrategy表示一种策略,用于确定在服务暂时不可用的情况下是否应该在一段时间后重试该请求(响应状态503)。

在5.0中,这两个接口很可能被单个策略接口取代。