web-dev-qa-db-fra.com

Comment convertir Mono <Liste <String >> en Flux <String>

Je convertis un petit projet écrit dans RxJava 1.x en Reactor 3.x. Tout va bien, sauf que je ne savais pas comment remplacer flatMap(Observable::from) par une contrepartie appropriée. J'ai Mono<List<String>> et je dois le convertir en Flux<String>.

Merci

13
Mavo

Dans Reactor 3, l'opérateur from a été spécialisé dans quelques variantes, en fonction de la source d'origine (tableau, itérable, etc.).

Utilisez yourMono.flatMapMany(Flux::fromIterable) dans votre cas.

27
Simon Baslé

Je pense que probablement Flux::mergeSequential usine statique correspond mieux ici:

 Iterable<Mono<String>> monos = ...
 Flux<String> f = Flux.mergeSequential(monos);

Ce type de fusion (séquentiel) conservera l'ordre dans une source donnée, et sera également abonné/demandé avec impatience à toutes les sources participantes (donc davantage de parallélisation attendue lors du calcul des résultats mono).

2
Michail Alexakis

Merci Simon, j'ai mis en place quelque chose comme ça:

List<Object> dbObjects = ListObjectsBD();
    List<Dao> daos = mapperObjToDao(dbObjects);
    Flux<Dao> daoFlux = Mono.just(daos).flatMapMany(Flux::fromIterable);
0
Anthony Piñero