Время ожидания соединения истекло

#java #spring-boot #rest

#java #весенняя загрузка #отдых

Вопрос:

У меня есть микросервис для Spring boot 2, и он взаимодействует с другими сервисами. У меня возникла проблема, заключающаяся в том, что когда я вызываю другую службу, используя resttemlate, и она недоступна, основной поток останавливается и ожидает ответа от этой службы, и в результате через 15 секунд он получает ответ о тайм-ауте соединения. Проблема в том, что на этот раз я не могу ждать. Мне нужно, чтобы служба работала без задержек, а не ждала несколько секунд, пока другая служба ответит или не ответит. Как можно решить эту проблему? Я думаю, вы можете запустить другой поток с запросом к этой службе и позволить основному потоку продолжать работать без задержек, это правильное решение? Есть ли готовое решение в Spring Boot для моей проблемы?

Ответ №1:

Вы можете установить время ожидания для resttemplate. Укажите желаемое значение.

 int timeout = 1; // time here is in milliseconds.
HttpComponentsClientHttpRequestFactory rf =
        (HttpComponentsClientHttpRequestFactory) restTemplate.getRequestFactory();
    rf.setConnectTimeout(timeout);