不支持 spring boot webclient 阻塞

问题描述 投票:0回答:1

以下功能:

public ScoringResponse search(SearchRequest searchRequest) {
    return webClient.post()
            .bodyValue(searchRequest)
            .retrieve()
            .onStatus(HttpStatusCode::isError, ERROR_HANDLER::handleError)
            .bodyToMono(ScoringResponse.class)
            .timeout(Duration.ofMillis(5_000))
            .subscribeOn(Schedulers.boundedElastic())
            .block();
}

它返回此错误:

java.lang.IllegalStateException: block()/blockFirst()/blockLast() are
blocking, which is not supported in thread reactor-http-epoll-2
java spring-boot spring-webflux project-reactor spring-webclient
1个回答
0
投票

试试这个,

public Mono<ScoringResponse> search(SearchRequest searchRequest) {
return webClient.post()
        .bodyValue(searchRequest)
        .retrieve()
        .onStatus(HttpStatus::isError, ERROR_HANDLER::handleError)
        .bodyToMono(ScoringResponse.class)
        .timeout(Duration.ofMillis(5_000))
        .subscribeOn(Schedulers.boundedElastic());                        
}
© www.soinside.com 2019 - 2024. All rights reserved.