Spring 5 webflux взаимозависимые вызовы веб-клиентов не получают тайм-аут - PullRequest
0 голосов
/ 25 июня 2019

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

Я пытался создать отдельные экземпляры веб-клиента для каждого вызова.проблема остается.

HttpClient httpClient = HttpClient.create()
            .tcpConfiguration(client ->

                    client.doOnConnected(conn -> conn
                            .addHandlerLast(new ReadTimeoutHandler(10))
                            .addHandlerLast(new WriteTimeoutHandler(10))));


    return WebClient.builder().baseUrl(url).clientConnector(new ReactorClientHttpConnector(httpClient))
            .exchangeStrategies(ExchangeStrategies.withDefaults())
            .defaultHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_UTF8_VALUE)
            .filter(ExchangeFilterFunctions
                    .basicAuthentication(", "))
            .build();

Ниже приведены два последующих вызова, где, когда второй вызов является отложенным ответом, исключение readtimeout не генерируется

request = request.flatMap(req ->
                tempService.getId(loggedInUser, token)
      .map(response -> {
                            req.setRetrieveClientIdentifier(response.getId());
                            return seRequest;
                        }))

                .zipWhen(request -> tempService.getIdFor(request.getIdentifier(), accountToken)).map(tuple -> {

                    tuple.getT1().setID(tuple.getT2().getId());
                    return tuple.getT1();
                });
...