Spring Boot 2-将Mono转换为rx.Observable?

时间:2018-07-09 13:02:11

标签: spring spring-mvc spring-boot rx-java hystrix

我试图将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 :(.
}

这样做容易吗?

致谢

2 个答案:

答案 0 :(得分:3)

推荐的方法是使用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
}

答案 1 :(得分:0)

您可以使用

Observable.fromFuture(webClient.get()
        .uri(url)
        .accept(MediaType.APPLICATION_JSON)
        .retrieve()
        .bodyToMono(Comment.class).toFuture());