【发布时间】:2018-11-12 15:58:48
【问题描述】:
有没有办法将 Mono 对象转换为 java Pojo?
我有一个连接到第 3 方 REST 服务的 Web 客户端,我必须提取该对象并询问它,而不是返回 Mono。
我找到的所有示例都返回Mono<Pojo>,但我必须获取 Pojo 本身。目前,我是通过在 Pojo 上调用 block() 来实现的,但是有没有更好的方法来避免阻塞?
该块的问题是,在几次运行后,它开始抛出一些错误,例如块 Terminated with error。
public MyPojo getPojo(){
return myWebClient.get()
.uri(generateUrl())
.headers(createHttpHeaders(headersMap))
.exchange()
.flatMap(evaluateResponseStatus())
.block();
}
private Function<ClientResponse, Mono<? extends MyPojo>> evaluateResponseStatus() {
return response -> {
if (response.statusCode() == HttpStatus.OK) {
return response.bodyToMono(MyPojo.class);
}
if (webClientUtils.isError(response.statusCode())) {
throw myHttpException(response);
// This invokes my exceptionAdvice
// but after few runs its ignored and 500 error is returned.
}
return Mono.empty();
};
}
【问题讨论】:
标签: java spring-webflux project-reactor web-client