ドキュメントに従って:
Fluxは0..N個の要素を放出できるストリームです:
Flux<String> fl = Flux.just("a", "b", "c");
Monoは0..1要素のストリームです:
Mono<String> mn = Mono.just("hello");
そして、どちらもリアクティブストリームでのPublisherインターフェイスの実装です。
ほとんどの場合、Fluxのみを使用して、0..1も放出できるため、Monoの条件を満たすことはできませんか?
または、Monoのみを使用する必要があり、Fluxが操作を処理できない特定の条件がありますか?提案してください。
多くの場合、何らかの計算を行っているか、サービスを呼び出していますが、複数の結果を含む可能性のあるコレクションではなく、正確に1つの結果(またはゼロまたは1つの結果)を期待しています。このような場合、Mono
を使用する方が便利です。
これを「通常の」Javaと比較してください。0個または1個の結果を返すメソッドの戻り型としてList
を使用しないでください。代わりにOptional
を使用すると、複数の結果が予期されないことがすぐにわかります。
FluxはRxJava Observableと同等です。
-0個以上のアイテム(多くの要素のストリーム)
-次にオプションで、またはに失敗
Monoは最大で1つのアイテムしか放出できません(1つの要素をストリームします)
関係:
ドキュメントから こちら
この区別は、非同期処理の大まかなカーディナリティを示す、セマンティック情報の一部をタイプに運びます。たとえば、HTTP要求は1つの応答のみを生成するため、カウント操作を実行してもあまり意味がありません。したがって、このようなHTTP呼び出しの結果をMonoとして表現することは、Fluxとして表現するよりも理にかなっています。ゼロアイテムまたは1アイテムのコンテキストに関連する演算子のみを提供するためです。