Код: Выделить всё
webClient
.get()
.uri(uri)
.headers(httpHeaders -> setHeaders(httpHeaders, headers))
.retrieve()
.onStatus(
status -> !status.is2xxSuccessful(),
clientResponse ->
clientResponse
.bodyToMono(ErrorResponse.class)
.flatMap(
response ->
Mono.error(
new CustomServiceException(
clientResponse.statusCode(), response))))
.bodyToMono(responseType)
.block();
< /code>
Настройка WebClient следующим образом: < /p>
WebClient.builder().baseUrl("http://172.22.35.203:8081").build();
< /code>
Я использую ниже Spring-webflux зависимость: < /p>
org.springframework
spring-webflux
5.3.39
.doOnError(error -> System.out.println("Error signal detected" + error))
< /code>
И я получаю приведенную ниже ошибку: < /p>
Exception thrown from webclient: java.util.concurrent.TimeoutException: Did not observe any item or terminal signal within 30000ms in 'flatMap' (and no fallback has been configured)
reactor.core.Exceptions$ReactiveException: java.util.concurrent.TimeoutException: Did not observe any item or terminal signal within 30000ms in 'flatMap' (and no fallback has been configured
< /code>
, что предполагает, что хост не отправляет никакого ответа. Но я сомневаюсь, что это так, как отправка запроса через почтальона и использование Resttemplate действительно возвращает ответ. Ниже я использую Resttemplate и это печатает ответ: < /p>
restTemplate.getForEntity("http://172.22.35.203:8081/v1/customer/s ... mber=false", String.class).getBody()
< /code>
Кроме того, я добавил журналы к уровню контроллера и репозитория, и с помощью журналов я могу подтвердить, что там нет ошибок.
Я повторно обращаю здесь ту же самую конфигурацию WebClient, когда API работал на Java 21. (API в основном является многомодульным проектом Maven, и один из проектов-это простой клиент, который подключает к AP). /> Так, в основном, я хочу знать, как я могу отладить/вероятную причину сбоя, когда называется block ().
Подробнее здесь: https://stackoverflow.com/questions/797 ... ks-well-wh