Позвольте мне рассказать немного о проблеме, с которой я сейчас сталкиваюсь, а также о решении, которое мы пытаемся реализовать:
В настоящее время мы реализовали клиент REST с использованием org.apache.cxf.jaxrs.client.WebClient, и в этой реализации мы хотим установить тайм-аут, чтобы операции, которые действительно занимают время, корректно истекали по тайм-ауту.
Здесь, в этом контексте, мы должны потратить много времени на изучение того, какие варианты тайм-аута должны быть предоставлены, чтобы длительная операция была корректно отключена по тайм-ауту, вместо того, чтобы позволять операции длиться долго!
Мы попытались следовать многим подходам, предложенным здесь, в StackOverflow, чтобы установить тайм-аут, как показано ниже, которые не служат цели (после вопроса это, попробовали этот подход):
HTTPConduit conduit = WebClient.getConfig(webClient).getHttpConduit();
conduit.getClient().setConnectionTimeout(1000 * 3);
conduit.getClient().setReceiveTimeout(1000 * 3);
Очевидно, из этого не вышло. И при дальнейшем изучении кода WebClient и ClientConfiguration заметил, что есть еще один вариант, чтобы попробовать (даже это не сработало). Вот реализация, которую я пробовал.
ClientConfiguration clientConfiguration = WebClient.getConfig(webClient);
clientConfiguration.setSynchronousTimeout(90000); //default value here being 60000, on increasing this - it doesn't take effect
Просто хотел понять, когда и где эти тайм-ауты начинают действовать, когда мы пытаемся вызвать соответствующие действия HTTP GET, POST или PUT. Я очень запутался, где эти таймауты повлияют на то, какие операции сейчас!
Я знаю, что не могу предоставить минимальный отлаживаемый код, который можно было бы изучить, но это должно быть что-то очень простое для любых реализаций REST (я думаю).
Любые указатели на это очень приветствуются.




Для HTTP synchronousTimeout - это receiveTimeout. CXF также поддерживает другие транспорты, кроме HTTP, поэтому существует это дополнительное свойство. receiveTimeout идет первым, поэтому установка другого значения для synchronousTimeout не имеет никакого эффекта (см. https://github.com/apache/cxf/blob/master/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/ClientConfiguration.java#L67).
Случай здесь был для HTTP, и я смог установить значение, отличное от
60000msпо умолчанию ...