如何处理具有Mono <t>的响应

时间:2019-03-19 19:39:16

标签: spring reactive

我有一个如下所示的响应对象,我需要返回给服务的调用者。我需要返回R的实例。

public class R {
    private A a;
    private B b;
}

我进行了2次服务调用,以从一个服务获得Mono,从另一个服务获取Mono。

现在,我尝试以以下方式进行这些服务调用。我不知道如何创建“ C”的实例并设置从服务调用返回的值A和B。

Mono.empty()                      .concatWith(//Call that returns Mono<A>)
.concatWith(//Call that returns Mono<B>)
.??? // What do I do now? How to get A and B and 
     // set  it in a new instance of C?

谢谢。

1 个答案:

答案 0 :(得分:1)

使用Mono#zipWith,然后使用map

Mono<A> aMono = Mono.just(new A());
Mono<B> bMono = Mono.just(new B());

aMono.zipWith(bMono)
    .map(t -> new R(t.getT1(), t.getT2()));

static zip方法

Mono.zip(aMono, bMono, R::new); // returns Mono<R>