【问题标题】:HttpClient: What is the difference between ServiceUnavailableRetryStrategy and HttpRequestRetryHandler?HttpClient:ServiceUnavailableRetryStrategy和HttpRequestRetryHandler有什么区别?
【发布时间】:2014-06-14 13:15:29
【问题描述】:

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

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

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

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

【问题讨论】:

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


    【解决方案1】:
    • HttpRequestRetryHandler 表示一种策略,用于确定在 I/O 错误(未收到来自服务器的 HTTP 响应)的情况下请求是否可以安全重试。

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

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

    【讨论】:

      猜你喜欢
      • 2010-10-02
      • 2011-12-12
      • 2010-09-16
      • 2012-03-14
      • 2012-02-06
      • 2011-02-25
      • 2011-11-22
      • 2015-03-26
      • 2013-08-19
      相关资源
      最近更新 更多