首页 > 解决方案 > 如何处理具有 Mono 的响应

问题描述

我有一个像下面这样的响应对象,我需要返回给我的服务的调用者。我需要返回一个 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?

谢谢。

标签: springreactive

解决方案


使用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>

推荐阅读