hc-httpclient-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jaikit Savla <jaikit.sa...@yahoo.com>
Subject Understanding and configuring in HttpAsyncClient 4.0-beta4
Date Fri, 18 Oct 2013 04:46:02 GMT
Hello Mates,

1. In RequestConfig: What is the difference between ConnectTimeout and ConnectionRequestTimeout
?
From quick look at code - I concluded that ConnectTimeout is "timeout when client tries to
connect to server" and ConnectionRequestTimeout is "timeout when request can be considered
expired". 

2. How can I set connection manager timeout ? This time out implies if all connections are
busy/leased, it will wait for specified time in queue before returning timeout error. Please
correct if my understanding is wrong.
 Previously I used httpparams to do that. But now httpparams seems to be have deprecated.
// timeout waiting for a connection from the connection manager. 
httpParams.setParameter("http.connection-manager.timeout", (int) config.getConnectionManagerTimeout()
        .toMillis());

3. How can I set HttpVersion ?
HttpProtocolParams.setVersion(httpParams, HttpVersion.HTTP_1_1);

4. Also I noticed that socket/connection timeouts are configured at multiple places. Hence
would like to make sure what is best practice to configure them. Should we set at all below
3 places ?
1. IOReactorConfig has sockettimeout and connection timeout 
2. SocketConfig which can be set to PoolingNHttpClientConnectionManager
3. RequestConfig - also has both Socket and Connection timeout setting.

Code:

PoolingNHttpClientConnectionManager connectionManager;
try {
    DefaultConnectingIOReactor ioreactor = new DefaultConnectingIOReactor();
    connectionManager = new PoolingNHttpClientConnectionManager(ioreactor);
} catch (IOReactorException e) {
    throw new RuntimeException(e);
}

SocketConfig socketConfig = SocketConfig.custom().setSoTimeout((int) config.getSocketTimeOut().toMillis()).setTcpNoDelay(true).build();
ConnectionConfig connectionConfig = ConnectionConfig.custom().setCharset(Charset.forName("UTF-8")).build();
RequestConfig requestConfig = RequestConfig.custom().setCircularRedirectsAllowed(true)
        .setConnectTimeout((int) config.getConnectionTimeOut().toMillis())
        .setConnectionRequestTimeout((int) config.getConnectionTimeOut().toMillis())
        .setSocketTimeout((int) config.getSocketTimeOut().toMillis())
        .build();

connectionManager.setDefaultSocketConfig(socketConfig);
connectionManager.setDefaultConnectionConfig(connectionConfig);

HttpAsyncClientBuilder asyncHttpClientBuilder = HttpAsyncClientBuilder.create();
asyncHttpClientBuilder.setConnectionManager(connectionManager);
asyncHttpClientBuilder.setUserAgent("xyz");
asyncHttpClientBuilder.setDefaultRequestConfig(requestConfig);
HttpAsyncClient client = asyncHttpClientBuilder.build();

Thanks,
Jaikit
Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message