Я недавно переключился с java.net
на org.apache.http.client
, у меня есть ClosableHttpClient
с HttpClientBuilder
. В качестве менеджера соединений я использую BasicHttpClientConnectionManager
.Apache HttpComponents BasicHttpClientConnectionManager
Теперь у меня есть проблема, что очень часто, когда я создаю HTTP-запрос, я получаю исключение тайм-аута. Похоже, что диспетчер соединений поддерживает открытые соединения для повторного использования, но если система простаивает в течение нескольких минут, это соединение будет отключено, и когда я сделаю следующий запрос, первое, что я получу, - это тайм-аут. Повторяя один и тот же запрос еще раз, он обычно работает без каких-либо проблем.
Есть ли способ настроить BasicHttpClientConnectionManager
, чтобы не повторять его подключения и создавать новое соединение каждый раз?
@ScaryWombat глядя на документацию java.net.Socket, кажется, что тайм-аут сокет будет только контролировать, как долго 'чтения()' вызов будет блокировать. Вы уверены, что это подходит в моей ситуации? 'closeIdleConnections', похоже, будет закрывать ** в настоящее время ** бездействующие соединения и будет иметь эффект только один раз. Но мне нужно что-то, что я могу настроить один раз, и он будет применяться для всех открытых соединений. – lanoxx
извините, что вы правы –
@ScaryWombat ОК, спасибо в любом случае, есть ли у вас какие-либо другие предложения? – lanoxx