Mono vs Flux in Reactive Stream
In many cases, you are doing some computation or calling a service and you expect exactly one result (or maybe zero or one result), and not a collection that contains possibly multiple results. In such cases, it's more convenient to have a Mono
.
Compare it to "regular" Java: you would not use List
as the return type of any method that can return zero or one result. You would use Optional
instead, which makes it immediately clear that you do not expect more than one result.
Flux is equivalent to RxJava Observable is capable of emitting
- zero or more item (streams of many elements)
- and then OPTIONALLY , completing OR failing
Mono can only emit one item at the most (streams one element)
Relations:
- If you concatente two Monos you will get a Flux
- You can call single() on Flux to return a Mono