Как Block () реактор HTTP Thread во время вызова сторонних API с помощью Spring Boot WebClient?JAVA

Программисты JAVA общаются здесь
Anonymous
Как Block () реактор HTTP Thread во время вызова сторонних API с помощью Spring Boot WebClient?

Сообщение Anonymous »

Я пишу общий метод для вызова стороннего API из моего микро-сервиса. < /p>
private R processRequest(String url, Class type, HttpEntity
requestEntity, HttpMethod method) {

HttpHeaders httpHeaders = requestEntity.getHeaders();

Mono result = getResult(method, url, httpHeaders, type);
R responseBody = result.block();

return responseBody;
}

private Mono getResult(HttpMethod method, String url, HttpHeaders httpHeaders, Class type) {
return webClient.method(method)
.uri(url)
.accept(MediaType.ALL)
.contentType(MediaType.APPLICATION_JSON)
.headers(headers -> headers.putAll(httpHeaders))
.retrieve()
.onStatus(HttpStatusCode::is4xxClientError,
clientResponse -> Mono.error(new RuntimeException("Client error")))
.onStatus(HttpStatusCode::is5xxServerError,
clientResponse -> Mono.error(new RuntimeException("Server error")))
.bodyToMono(type);
}
< /code>
Но, когда я вызываю метод ProcessRequest (), я получаю приведенную ниже ошибку. < /p>
java.lang.IllegalStateException: block()/blockFirst()/blockLast() are blocking, which is not supported in thread reactor-http-nio-3
< /code>
Может ли кто-нибудь помочь решить эту проблему. < /p>
Технический стек:
java: 17
Spring-Boot-Starter-Parent: 3.1.1
Spring-Boot-Starter-webflux: 3.1.1 < /p>
p.s. Для использования операций блокировки в реактивном коде


Подробнее здесь: https://stackoverflow.com/questions/780 ... -spring-bo

Вернуться в «JAVA»