web-dev-qa-db-ja.com

Mono <List <String >>をFlux <String>に変換する方法

RxJava 1.xで書かれた小さなプロジェクトをReactor 3.xに変換しています。 flatMap(Observable::from)を適切な対応物に置き換える方法を見つけることができなかったことを除いて、すべてが良いです。 Mono<List<String>>があり、Flux<String>に変換する必要があります。

ありがとう

15
Mavo

Reactor 3では、from演算子は、元のソース(配列、反復可能など)に応じていくつかのバリアントに特化されました。

あなたのケースではyourMono.flatMapMany(Flux::fromIterable)を使用してください。

33
Simon Baslé

おそらくFlux::mergeSequential静的ファクトリーは、ここにより適しています。

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

この種のマージ(シーケンシャル)は、指定されたソース内の順序を反復可能に維持し、すべての参加ソースから熱心にサブスクライブ/要求します(モノラル結果の計算中により多くの並列化が期待されます)。

2

サイモンのおかげで、私はこのようなものを実装しました:

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