HttpClient:ServiceUnavailableRetryStrategy和HttpRequestRetryHandler有什么区别?

13
我希望处理这种情况,即在延迟后重试,但似乎在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个回答

15
  • HttpRequestRetryHandler表示一种策略,确定在出现I/O错误(未从服务器收到HTTP响应)的情况下,请求是否安全可靠进行重试。

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

在5.0版本中,这两个接口可能会被一个单一的策略接口所取代。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接