}
execChain = new RetryExec(execChain, retryHandlerCopy);
}
automaticRetriesDisabled 是一个 boolean 类型的变量,默认为 false ,所以条件默认是成立的,如果没有设置 HttpRequestRetryHandler 就会用一个默认的。
DefaultHttpRequestRetryHandler 主要有三个成员变量
retryCount
requestSentRetryEnabled
nonRetriableClasses
默认的实例变量设置如下
retryCount=3 ,最多重试3次。
requestSentRetryEnabled=false ,发送成功的就不会重试了
nonRetriableClasses 包含了以下四种:InterruptedIOException UnknownHostException ConnectException SSLException
重试的执行逻辑在 org.apache.http.impl.execchain.RetryExec ,有兴趣的可以去看下。
默认的是否重试逻辑如下
@Override
public boolean retryRequest(final IOException exception, final int executionCount, final HttpContext context) {
Args.notNull(exception, “Exception parameter”);
Args.notNull(context, “HTTP context”)
《一线大厂Java面试题解析+后端开发学习笔记+最新