【问题标题】:Reactor: download n images in parallel and failure of one shouldn't affect the restReactor:并行下载 n 个图像,一个失败不应影响其余图像
【发布时间】:2019-03-24 13:56:57
【问题描述】:

我有一个用例,我想获取图像路径(通过 n 个 REST 调用)。我希望这些调用并行运行,并且一个失败不应影响其余调用。

这是我尝试过的,但问题是调用顺序运行:

Scheduler scheduler = Schedulers.elastic();
Flux.fromIterable(product.getIds()).runOn(scheduler)
                     .map(item -> getImages(item))
                      .subscribe(img -> System.out.println(img));

我一直在 Spring webflux 中尝试它。对我在这里缺少什么有什么想法吗?

【问题讨论】:

  • 能否添加请求客户端代码(getImages方法)?请求可能被阻塞
  • 能否请您发布正确的代码? runOn 仅适用于 ParallelFlux

标签: java spring-webflux project-reactor reactor


【解决方案1】:

使用.parallel() 将按顺序发出项目的Flux 转换为ParallelFlux

Flux.fromIterable(product.getIds())
  .parallel()
  .runOn(Schedulers.elastic())
  .map(item -> getImages(item))
  .subscribe(img -> System.out.println(img));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-16
    • 2016-12-21
    • 2021-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-31
    相关资源
    最近更新 更多