将 Spring Boot 版本从 2.6.6 升级到 2.6.7 后,我在执行 Web 客户端休息调用时遇到以下错误。任何想法?
示例代码
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 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中)。不过,如果有整个堆栈异常就好了。
@jianjianbo 说得没错,你需要更新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/core/publisher/MonoSink.java https://github.com/reactor/reactor-core/blob/v3.4.16/reactor-core/src/main/java/reactor/core/publisher/MonoSink.java
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)