Thank you for your reply.

I think I just set the IOReactorConfig.setConnectTimeout(). This is my code 
(HttpAsyncClient4.0.2) :


public class Test {
    public static void main(String[] args) throws InterruptedException,
            IOException, TimeoutException {
        IOReactorConfig ioReactorConfig = IOReactorConfig.custom()
                .setConnectTimeout(2000).build();
        ConnectingIOReactor ioReactor = new DefaultConnectingIOReactor(
                ioReactorConfig);
        PoolingNHttpClientConnectionManager cm = new 
PoolingNHttpClientConnectionManager(
                ioReactor);
        CloseableHttpAsyncClient httpclient = HttpAsyncClients.custom()
                .setConnectionManager(cm).build();
        httpclient.start();
        HttpGet request = new HttpGet("http://1.1.1.1/";);
        Future<HttpResponse> future = httpclient.execute(request, null);
        long timeSt = new Date().getTime();
        try {
            HttpResponse response = future.get();
        } catch (InterruptedException e) {
            e.printStackTrace();
        } catch (ExecutionException e) {
            System.out.println(new Date().getTime() - timeSt);
            System.out.println(e.getMessage());
        }
        httpclient.close();
    }
}


It took 21 seconds to get a ConnectException while the ConnectTimeout was 2 
seconds. 
Could you help me to look at this problem? Thanks!


Regards,
Whybert


At 2014-08-25 07:42:28, "Oleg Kalnichevski" <[email protected]> wrote:
>On Sun, 2014-08-24 at 12:07 +0800, whybert wrote:
>> Hi,
>>      I am evaluating HTTP Async client and have following questions.
>> 
>> 
>> There are two ways to set ConnectTimeout and SoTimeout in official examples: 
>>         // Create I/O reactor configuration
>>         IOReactorConfig ioReactorConfig = IOReactorConfig.custom()
>>                 .setIoThreadCount(Runtime.getRuntime().availableProcessors())
>>                 .setConnectTimeout(30000)
>>                 .setSoTimeout(30000)
>>                 .build();
>>         RequestConfig requestConfig = 
>> RequestConfig.copy(defaultRequestConfig)
>>                 .setSocketTimeout(5000)
>>                 .setConnectTimeout(5000)
>>                 .setConnectionRequestTimeout(5000)
>>                 .build();
>> What's the difference between the two ways? 
>
>Consider I/O reactor configuration to be global defaults some which can
>overridden at the request level.
>
>> And I find the IOReactorConfig.custom().setConnectTimeout() doesn't seem to 
>> work.
>
>I can see the default connecting I/O reactor impl clearly making use of
>this parameter. Could you please make sure you are not overriding the
>I/O reactor defaults at the request level?
>
>Oleg
>
>
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: [email protected]
>For additional commands, e-mail: [email protected]
>

Reply via email to