В чем разница между RecieveTimeout и SynchronousTimeout в org.apache.cxf.jaxrs.client.WebClient? - PullRequest
0 голосов
/ 30 мая 2018

Позвольте мне представить некоторые сведения о проблеме, с которой я сейчас сталкиваюсь, и о решении, которое мы также пытаемся реализовать:

В настоящее время мы внедрили 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 (я думаю,).

Любые указатели на это очень ценятся.

1 Ответ

0 голосов
/ 02 июня 2018

Для 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).

...