首页 > 解决方案 > 在 Spring 反应式中聚合单声道

问题描述

我正在尝试汇总 Spring 反应式中 5 个服务调用的结果。每个服务调用都会进行外部 API 调用并获得结果。

例子:

Mono<A> = serviceCall1(...);
Mono<B> = serviceCall2(...);
Mono<C> = serviceCall3(...);
Mono<D> = serviceCall4(...);
Mono<E> = serviceCall5(...);

我需要做的是并行进行所有这些调用,将结果聚合到 Mono 中。但是,如果任何呼叫失败,我仍然应该能够确保所有呼叫都完成。有些调用可能会失败,有些可能会成功。

我该怎么办?

标签: springmonoreactive

解决方案


您只需要使用Mono中的zip操作即可。只需确保您在上述每个 Monos 中都有 onErrorResume 后备。当接收到现有 Monos 的所有值时, Mono.zip将运行。


推荐阅读