Apache HttpClient позволяет настроить два таймаута: ConnectionTimeout
и SoTimeout
Apache HttpClient - ConnectionTimeout и SoTimeout
Это как люди, как правило, создают общую цель HttpClient экземпляра:
PoolingClientConnectionManager conman = new PoolingClientConnectionManager();
conman.setMaxTotal(200);
conman.setDefaultMaxPerRoute(100);
HttpClient httpClient = new DefaultHttpClient(conman);
HttpConnectionParams.setConnectionTimeout(httpClient.getParams(), 1000);
HttpConnectionParams.setSoTimeout(httpClient.getParams(), 1000);
ConnectionTimeout
Параметр сложный, он охватывает два сценария:
HttpClient может бросить
org.apache.http.conn.ConnectTimeoutException: Connect to example.com timed out
- , если он был не в состоянии установить базовую соединение TCPТакже он может бросить
org.apache.http.conn.ConnectionPoolTimeoutException: Timeout waiting for connection from pool
- , когда пул соединений полон, и это было не в состоянии получить новое соединение с бассейном в течение этого периода времени
у меня есть два вопроса вокруг этого:
1) Есть ли причина, по которой эти два фактических разных тайм-аута были объединены под одним параметром ConnectionTimeout
.
Там нет никакого способа, например, ждать доступное соединение с бассейна для 10сок, но держать сокет-соединение-таймаут 1sec
2) Что рекомендуемое значение для ConnectionTimeOut и SoTimeout для общего назначения сценария?
1. Удовлетворение моего собственного любопытства изменит мою жизнь :), особенно если есть реальная причина :) –
2. 10s, вероятно, много .. Я понимаю, что «сценарий общего назначения» очень абстрактный, но в любом случае ... –