Использование HttpAsyncClients: сохранение соединения в течение длительного времени

#java #http #apache-httpclient-4.x

#java #http #apache-httpclient-4.x

Вопрос:

Я пытаюсь использовать HttpAsyncClient для запуска и забыть в своем приложении.

http://hc.apache.org/httpcomponents-asyncclient-4.0.x/

Но для того, чтобы по-настоящему запустить и забыть, мне нужно избегать закрытия клиента, так как я не хочу ждать ответа, и если я закроюсь, соединение, возможно, не было установлено до этого.

        CloseableHttpAsyncClient httpclient = HttpAsyncClients.createDefault();
       httpclient.start();
       HttpGet request = new HttpGet(url);
       Future<HttpResponse> future = httpclient.execute(request, null);
       HttpResponse resp = future.get();
       httpclient.close();
 

Итак, одна мысль заключается в том, что я не закрываю httpclient и продолжаю использовать его для нескольких URL-адресов.
Поэтому я создам клиент при запуске сервера и продолжу использовать один и тот же клиент для всех запросов.

Таким образом, закрытие не требуется, так как оно освобождается только при остановке сервера. Мой вопрос в том, будет ли это проблемой? Не устареет ли клиент через какое-то время?

Ответ №1:

Настоятельно рекомендуется повторное использование одного и того же экземпляра HttpAsyncClient . HttpAsyncClient не станет «устаревшим». Закрыть нужно только HttpAsyncClient после того, как больше не будет запросов для выполнения (например, в случае завершения работы приложения).