In this section, we'll have a look at a few more useful operators that don't fall into the broad categories we explored earlier. Reactor 3 contains a lot of operators, so don't hesitate to have a look at the Flux and Mono javadocs as well as the reference guide to learn about more of them.
In the first exercise we'll receive 3
Flux<String>. Their elements could arrive with
latency, yet each time the three sequences have all emitted an element, we want to combine
these 3 elements and create a new
User. This concatenate-and-transform operation is
If you have 3 possible Mono sources and you only want to keep the fastest one, you can use
first static method:
Flux, a similar result can be achieved using the
firstEmitting static method.
In this case it's the flux which emits an initial element first which is selected. Flux aren't mixed.
Sometimes you're not interested in elements of a
Flux<T>. If you want to still keep a
Flux<T> type, you can use
ignoreElements(). But if you really just want the completion,
represented as a
Mono<Void>, you can use
Reactive Streams does not allow null values in
onNext. There's an operator that allow to
just emit one value, unless it is null in which case it will revert to an empty
Can you find it?
Similarly, if you want to prevent the empty
Mono case by falling back to a different one,
you can find an operator that does this switch: