Различные параметры показаны в этом коде:
Код: Выделить всё
RequestConfig requestConfig = RequestConfig.custom()
.setConnectionRequestTimeout(connectionRequestTimeout, TimeUnit.MILLISECONDS)
.setResponseTimeout(responseTimeout, TimeUnit.MILLISECONDS)
.setConnectTimeout(connectTimeout, TimeUnit.MILLISECONDS) // Deprecated - Use {@link ConnectionConfig.Builder#setConnectTimeout(Timeout)}.
.build();
ConnectionConfig connectionConfig = ConnectionConfig.custom()
.setConnectTimeout(connectTimeout, TimeUnit.MILLISECONDS)
.setSocketTimeout(socketTimeout, TimeUnit.MILLISECONDS)
.build();
SocketConfig socketConfig = SocketConfig.custom()
.setSoTimeout(socketTimeout, TimeUnit.MILLISECONDS)
.build();
PoolingHttpClientConnectionManager poolingHttpClientConnectionManager = PoolingHttpClientConnectionManagerBuilder.create()
.setDefaultConnectionConfig(connectionConfig)
.setDefaultSocketConfig(socketConfig)
.build();
HttpClient httpClient = HttpClientBuilder.create()
.setConnectionManager(poolingHttpClientConnectionManager)
.setDefaultRequestConfig(requestConfig)
.build();
< /code>
Мое текущее понимание таково: < /p>
ConnectionRequestTimeout
Код: Выделить всё
ConnectTimeout
Но в чем разница между:
Код: Выделить всё
RequestConfig.setResponseTimeout()
ConnectionConfig.setSocketTimeout()
SocketConfig.setSoTimeout()
< /code>
Все они, кажется, прочитаны /ответные тайм -ауты для запроса. Мне нужно только установить один из них?
из некоторого ограниченного тестирования, кажется, ответом времени < /code> переопределяет другие, возможно, подразумевает, что все, что мне нужно. Было бы неплохо просто использовать requestConfig
Я использую это с Springboot 3/Spring 6 и недавним удалением опции чтения на httpcomponentsclienthttprequestfactory , похоже, подразумевает Лучше всего настроить это прямо на HttpClient.
Подробнее здесь: https://stackoverflow.com/questions/780 ... tpclient-5