Установка времени ожидания соединения с помощью resttemplate с использованием closeableHttpclient - PullRequest
0 голосов
/ 04 марта 2019

Итак, я прочитал эту статью https://www.baeldung.com/httpclient-timeout и там говорится, что тайм-аут соединения добавляет к своему собственному штрафу, если для DNS базовой службы, к которой пытается подключиться httpclient, настроено несколько IP-адресов.

Так что, если у меня установлено время ожидания соединения 100 мс, а DNS вызываемой службы имеет 5 сопоставленных IP-адресов, то я смотрю на максимальное время ожидания соединения 500 мс, при условии, что работает последний IP-адрес.

Есть ли способ ограничить этот тайм-аут соединения, независимо от того, какая топология сервиса является клиентом, я всегда буду не зависим от этого.

1 Ответ

0 голосов
/ 09 марта 2019

Насколько я понял, у вас нет кода для запуска в 5 или более IP-адресов, а скорее любопытство.Итак, вот мой опыт:

Поскольку вы используете RestTemplate, который по умолчанию использует SimpleClientHttpRequestFactory.И как определение времени ожидания соединения идет:

Время ожидания соединения - это время ожидания при установлении первоначального соединения;т.е. завершение установления соединения TCP и подключение к запрашиваемому серверу.

Итак, в соответствии с теорией: независимо от топологии базовой службы RestTemplate попытается установить соединение в соответствии со значением времени ожидания соединения.

И чтобы выяснить almost exact timeout в вашем случае, вы должны выполнить некоторый тест задержки, распечатать разницу во времени, которую restTemplate берет, чтобы получить 200 OK.

Кроме того, SimpleClientHttpRequestFactory внутренне использует HttpURLConnection, который по умолчанию имеет время ожидания infinite (0 / -1).

Да, это также наблюдалось в редких случаях, соединение продолжает пытаться, если только Thread.interrupt() явно не вызывается до конца.

Таким образом, становится жизненно важным описать ваши значения времени ожидания для чтения и соединения, и таким образом вы ограничиваете свое соединение до установленных вами пределов.

Надеюсь, это поможет.

...