Webflux 结合两个具有依赖性的 Monos

Webflux combine two Monos with dependency

我想创建一个 Spring-Webflux-Service,它将两个来源的数据与依赖项结合起来。我是 Webflux 的新手,所以我不知道该怎么做。这是一些伪代码来显示我正在尝试做的事情:

@Service
public class ServiceB {

    private RepositoryB repositoryB;
    private ServiceA serviceA;

    public Mono<BigDecimal> calculate(UUID id) {
        return repositoryB.findById(id)
                .flatMap(b -> serviceA.find(b.getId()))
                .flatMap((a, b) -> a + b);

    }

repositoryB的结果包括我要用serviceA查找的数据的标识符。至少我想处理这两个数据集。我可以用什么方法代替第一个 flatMap?

您可能想使用 Mono.zipWhen,将两个 Monos 压缩成一个 Tuple:

public Mono<BigDecimal> calculate(UUID id) {
    return repositoryB.findById(id)
            .zipWhen(b -> serviceA.find(b.getId())
            .map(t -> t.getT1().add(t.getT2()));
}

另请注意,您不能将两个 BigDecimals+ 相加。