Как преобразовать Mono> в Flux
Я конвертирую небольшой проект, написанный на RxJava 1.x реактору 3.X. Все хорошо, кроме того, что я не смог узнать, как заменить flatMap(Observable::from)
с соответствующим партнером. У меня Mono<List<String>>
и мне нужно преобразовать его в Flux<String>
.
спасибо
3 ответов
в реакторе 3,from
оператор был специализирован на несколько вариантов, в зависимости от исходного источника (массив, iterable и т. д...).
использовать yourMono.flatMapMany(Flux::fromIterable)
в вашем случае.
спасибо Саймон, я реализовал что-то вроде этого:
List<Object> dbObjects = ListObjectsBD();
List<Dao> daos = mapperObjToDao(dbObjects);
Flux<Dao> daoFlux = Mono.just(daos).flatMapMany(Flux::fromIterable);
Я думаю, что, наверное,Flux::mergeSequential
статическая фабрика подходит лучше здесь:
Iterable<Mono<String>> monos = ...
Flux<String> f = Flux.mergeSequential(monos);
этот вид слияния (последовательный) будет поддерживать порядок внутри данного источника iterable, а также будет подписываться/запрашивать с нетерпением от всех участвующих источников (поэтому ожидается больше распараллеливания при вычислении результатов mono).