0
Apache HTTPクライアントがサーバーへの接続に失敗すると(IOException
)、接続を再試行する可能性があります。ただし、次回の再試行まで待機しません。これは、ターゲットサーバが復旧しているときや新しいサーバが立ち上がっているときには、新しい要求の準備に時間がかかることがあるなど、控えめなようです。Apache HTTPクライアントの再試行の間に遅延がないのはなぜですか?
なぜそうですか?ここで
はDefaultRequestDirector
から対応するコードです:
for (;;) {
context.setAttribute(ExecutionContext.HTTP_REQUEST, wrapper);
// Increment connect count
connectCount++;
try {
if (!managedConn.isOpen()) {
managedConn.open(route, context, params);
} else {
managedConn.setSocketTimeout(HttpConnectionParams.getSoTimeout(params));
}
establishRoute(route, context);
break;
} catch (final IOException ex) {
try {
managedConn.close();
} catch (final IOException ignore) {
}
if (retryHandler.retryRequest(ex, connectCount, context)) {
...
} else {
throw ex;
}
}
}