reactor-core/src/main/java/reactor/core/publisher/Flux.java
@SafeVarargs
	public static <T> Flux<T> mergeOrdered(int prefetch, Comparator<? super T> comparator, Publisher<? extends T>... sources) {
		if (sources.length == 0) {
			return empty();
		}
		if (sources.length == 1) {
			return from(sources[0]);
		}
		return onAssembly(new FluxMergeOrdered<>(prefetch, Queues.get(prefetch), comparator, sources));
	}
@SafeVarargs
	public static <T> Flux<T> mergeOrdered(int prefetch, Comparator<? super T> comparator, Publisher<? extends T>... sources) {
		if (sources.length == 0) {
			return empty();
		}
		if (sources.length == 1) {
			return from(sources[0]);
		}
		return onAssembly(new FluxMergeOrdered<>(prefetch, Queues.get(prefetch), comparator, sources));
	}
Merge data from provided {@link Publisher} sequences into an ordered merged sequence,
by picking the smallest values from each source (as defined by the provided
{@link Comparator}). This is not a {@link #sort(Comparator)}, as it doesn't consider
the whole of each sequences.
<p>
Instead, this operator considers only one value from each source and picks the
smallest of all these values, then replenishes the slot for that picked source.
<p>
<img class="marble" src="doc-files/marbles/mergeOrdered.svg" alt="">

@param prefetch the number of elements to prefetch from each source (avoiding too
many small requests to the source when picking)
@param comparator the {@link Comparator} to use to find the smallest value
@param sources {@link Publisher} sources to merge
@param <T> the merged type
@return a merged {@link Flux} that , subscribing early but keeping the original ordering