将 Spring Boot 版本从 2.6.6 升级到 2.6.7 后,我在执行 Web 客户端 rest 调用时出现以下错误。有什么想法吗?
示例代码
public void execute(BiConsumer<ResponseEntity<JsonNode>, Throwable> responseConsumer) {
WebClient.RequestBodyUriSpec uriSpec = getUriSpec();
Mono<ResponseEntity<JsonNode>> responseEntityMono = uriSpec
.uri(this::buildUri)//"localhost:1234")//
.headers(this::setHeaders)
.body(insertBody())
.retrieve().onRawStatus(i -> i == 599,
response -> response.bodyToMono(String.class)
.map(body -> new ExternalException(599, body)))
.toEntity(JsonNode.class);
CompletableFuture<ResponseEntity<JsonNode>> completableFuture = responseEntityMono.toFuture();
completableFuture.whenCompleteAsync(responseConsumer);
}
找不到的方法在类MonoSink中(在reactor-core项目中):https://github.com/reactor/reactor-core/blob/main/reactor-core/src/main/java /reactor/core/publisher/MonoSink.java
由于这是从spring boot 2.6.6版本升级后出现的异常,我猜找不到它的类是HttpClientConnect(在项目reactor-netty-http中)。不过,最好有整个堆栈异常。
@jiangjianbo 说的没错,你需要更新reactor-core来解决这个问题,但不是3.4.3版本。它至少应该是 3.4.17 版本(也就是说我会采用最新版本,在撰写本文时是 3.4.19)。正如您在版本 3.4.16 中看到的,contextView() 尚未创建:https://github.com/reactor/reactor-core/blob/v3.4.16/reactor-core/src/main/java/reactor/核心/发布者/MonoSink.java
升级你的pom.xml
<dependency>
<groupId>io.projectreactor</groupId>
<artifactId>reactor-core</artifactId>
<version>3.4.3</version>
</dependency>
升级pom.xml
<dependency>
<groupId>io.projectreactor</groupId>
<artifactId>reactor-core</artifactId>
<version>3.5.3</version>
</dependency>
您已重新加载 Maven 项目。
右键单击 Maven -> 重新加载项目。之后重新运行你的应用程序。