#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));