Реактор: загрузка n изображений параллельно, и сбой одного не должен влиять на остальные

#java #spring-webflux #project-reactor #reactor

#java #spring-webflux #проект-реактор #реактор

Вопрос:

У меня есть вариант использования, в котором я хочу извлекать пути к изображениям (с помощью n вызовов REST). Я хочу, чтобы эти вызовы выполнялись параллельно, и сбой одного не должен влиять на остальные.

Это то, что я пробовал, но проблема в том, что вызовы выполняются последовательно:

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

Я пробовал это в Spring webflux. Есть мысли о том, чего мне здесь не хватает?

Комментарии:

1. можете ли вы добавить клиентский код запроса (метод getImages)? запросы, вероятно, блокируются

2. Не могли бы вы, пожалуйста, опубликовать правильный код? runOn доступно только на ParallelFlux .

Ответ №1:

Используйте .parallel() для превращения Flux , которое последовательно выдает элементы в ParallelFlux .

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