Spring Boot 2 - 将 Mono 转换为 rx.Observable?
Posted
技术标签:
【中文标题】Spring Boot 2 - 将 Mono 转换为 rx.Observable?【英文标题】:Spring Boot 2 - Transforming a Mono to a rx.Observable? 【发布时间】:2018-12-17 04:17:48 【问题描述】:我正在尝试将 HystrixObservableCommand 与 Spring WebFlux WebClient 一起使用,我想知道是否有一个“干净”的方法可以将 Mono 转换为 rx.Observable。我的初始代码如下所示:
public Observable<Comment> getComment()
return webClient.get()
.uri(url)
.accept(MediaType.APPLICATION_JSON)
.retrieve()
.bodyToMono(Comment.class)
// stuff missing here :(.
有没有简单的方法?
问候
【问题讨论】:
【参考方案1】:推荐的方法是使用RxJavaReactiveStreams,更具体地说:
public Observable<Comment> getComment()
Mono<Comment> mono = webClient.get()
.uri(url)
.accept(MediaType.APPLICATION_JSON)
.retrieve()
.bodyToMono(Comment.class);
return RxReactiveStreams.toObservable(mono); // <-- convert any Publisher to RxJava 1
【讨论】:
【参考方案2】:你可以使用
Observable.fromFuture(webClient.get()
.uri(url)
.accept(MediaType.APPLICATION_JSON)
.retrieve()
.bodyToMono(Comment.class).toFuture());
【讨论】:
以上是关于Spring Boot 2 - 将 Mono 转换为 rx.Observable?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 spring boot webflux 上从 mono<user> 获取用户名?
Log Spring webflux 类型 - Mono 和 Flux
在 Spring Boot 中使用 Web Client Mono 获取 API 响应错误消息