【发布时间】:2020-11-12 03:19:09
【问题描述】:
我学习WebFlux不是太多,但是我发现了一个我无法解决的任务。如果我当前的请求中出现超时错误,我应该调用另一个 API,并且如果这个 API 返回正常 - 我应该离开这个方法并继续执行我的应用程序。我写了一些代码,但我没有找到解决方案。
return WebClient.create(documentLocalUrlSettings.getBase())
.post()
.uri(documentLocalUrlSettings.getSend())
.body(BodyInserters.fromValue(sendRequestDto))
.headers(httpHeadersConsumer)
.retrieve()
.bodyToMono(SendAndStatusResponseDto.class)
.timeout(Duration.ofMillis(10000))
.retryWhen(errorCurrentAttempt -> errorCurrentAttempt
.flatMap(tp -> {
var status = WebClient.create("baseUrl")
.post()
.uri("callableServiceUrl")
.body(BodyInserters.fromValue(StatusRequestDto.class))
.retrieve();
if (status != null && status.getResult().getResultCode() == 10001) {
return;
} else {
return Mono.<Object>error(new InternalRuntimeException(InternalExceptionCode.EX1001));
}
})).block();
UPD:api 调用 - 同步
【问题讨论】:
标签: java spring spring-boot rest spring-webflux