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

map和subscribe在Mono\flux上的区别?

严承允
2023-03-14

例如,如果我同时调度一个包含3个异步调用的列表,那么以下面的方式应用map操作会阻塞吗?

 Flux.merge(albums.stream().map(album -> {

        Mono<CoverResponse> responseMono  = clientRequestHandler.makeAsyncCall()

           //2.call and handler for async call
           return responseMono
                   .map(response -> processResponse());

       }).collect(Collectors.toList())).then(Mono.just(monoResponse));

在上面的片段中,每个map操作都要阻塞吗?假设第一个呼叫需要5毫秒才能返回,其他每一个呼叫需要2毫秒才能返回,我们是否要等待3ms+2ms+2m=7ms来执行enitre操作?或者只有3ms,因为一旦第一个调用得到解析,那么2ms的调用就已经解析了。

共有1个答案

微生德运
2023-03-14

首先,除非有人订阅,否则什么都不会发生。订阅是链中的最后一件事,它将触发所有事件的开始。

其次,您需要理解在parallell中运行某些东西与非阻塞运行某些东西的区别。

要解析第一个映射,它需要执行rest调用,然后使用响应执行第二个映射。这两个不会并行运行。

 类似资料:
  • 我是Spring5的新手。 1)如何记录Mono和flux类型的方法参数而不阻塞它们? 编辑1:我有这个命令式代码,我正在尝试转换成一个反应代码。由于在论证中引入了Mono,目前存在编译问题。

  • 问题内容: 对反应式编程感兴趣,我玩了《构建反应式RESTful Web服务》指南。并希望转移前途并添加一些单元测试。 我尝试使用普通的Junit / Mockito测试来测试我的处理程序()。但是,由于它是反应性的,因此处理程序将返回。所以我不得不用它来测试状态,但是无法抽出他的身体来测试它。在网络上搜索解决方案时,似乎所有示例都使用。 我的问题是: 鉴于所有示例都用于测试反应性REST服务,并

  • 对反应性编程感兴趣,我玩了一点构建反应性RESTful网络服务指南。并希望将其移至原版本并添加一些单元测试。 我试图用普通的Junit/Mockito测试来测试我的处理程序()。但是,因为它是被动的,所以处理程序返回一个

  • 我确实有一个方法,它成功地获取记录,我正在迭代它,以获取基于工人id的Mono对象,成功地返回对象,但我不能创建最终的通量,它应该包括的WorkerDTO(正常Spring Boot应用程序的WorkerDTO列表),但它返回空对象i. e

  • 我想从Flux/Mono中获取对象。我使用 我会这样做: 我有错误: 为什么?有什么不同的方法来获取对象? 在反应式编程中,如何做到:在RequestBody中,您有UserDto。 如果不创建用户,请检查数据库中是否存在电子邮件。

  • 我写了一个@Aspect来拦截以Mono/Flux返回值的被动方法。使用@AfterReturning advice,我试图通过调用webservice发出APNS通知。 不幸的是,processNotification Mono服务在没有执行调用链的情况下立即返回onComplete信号。下面是我的示例程序。 我们如何在不等待侦听的情况下异步触发此调用。。目前,processNotificati