当前位置: 首页 > 知识库问答 >
问题:

将两个单声道与依赖项相结合

宰父嘉胜
2023-03-14

我想创建一个SpringWebFlux服务,它将两个源的数据与一个依赖项相结合。我是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

共有1个答案

皮骏
2023-03-14

您可以返回reactor。util。作用第一个平面图中的元组

  public Mono<BigDecimal> calculate(UUID id) {
        return repositoryB.findById(id)
                .flatMap(b -> Mono.just(Tuples.of(b, serviceA.find(b.getId())))
                .flatMap((t) -> t.getT1().add(t.getT2()));

    }
 类似资料:
  • 我有一个简单的任务。我想在订单中添加产品。 我还想实现的是返回更新的订单。下面的代码不能像我希望的那样工作。有时所有的产品都被保存,有时一个也没有。我使用的数据库是被动mongo。

  • 我面临的情况是,我必须使用2 Mono,其中第二个将依赖于第一个的Id字段,并在第一个Mono的主体中返回第二个的响应。 例如: 然后将结果返回为 我试过了 但像这样,我只能返回第二个单声道的响应。 通过尝试Map或Flatmap,它只在第二个单声道上起作用。 请提出建议。

  • 我最近一直在学习使用Java中的reactor库和Spring框架进行反应式编程,并且在很大程度上我已经能够掌握它。然而,我发现自己有好几次遇到同样的情况,我想知道我哪里出了问题。 我正在努力解决的问题的要点是,我经常想用mono做一些事情,比如找到一些补充数据,然后将其添加回原始mono中。zip函数在我看来是一个理想的候选函数,但最终我订阅了两次原始mono,这不是我的意图。 这里有一个人为的

  • 我想根据一些条件将结果从两个单声道组合起来。这两个单声道都是网络客户端调用的结果: 第一个是期望快速响应的单个呼叫。 第二个是几个响应缓慢的电话的组合。 如果第一个单声道的结果满足某些条件,则“取消”第二个单声道的想法可以节省时间并避免不必要的网络调用。如果第一个单声道的结果不够,请使用第二个单声道。 一个静态编程语言代码示例来解释我的想法: 更新: 更清楚的是,让我们假设平凡的结果在1秒内出现,

  • 但是我有两种回购方式 如何创建两个bean,其中一个是用注入的,另一个是用注入的?