reactor-core/src/main/java/reactor/core/publisher/Flux.java
public static <I> Flux<I> merge(Iterable<? extends Publisher<? extends I>> sources) {
		return merge(fromIterable(sources));
	}
public static <I> Flux<I> merge(Iterable<? extends Publisher<? extends I>> sources) {
		return merge(fromIterable(sources));
	}
Merge data from {@link Publisher} sequences contained in an {@link Iterable}
into an interleaved merged sequence. Unlike {@link #concat(Publisher) concat}, inner
sources are subscribed to eagerly.
A new {@link Iterator} will be created for each subscriber.
<p>
<img class="marble" src="doc-files/marbles/mergeFixedSources.svg" alt="">
<p>
Note that merge is tailored to work with asynchronous sources or finite sources. When dealing with
an infinite source that doesn't already publish on a dedicated Scheduler, you must isolate that source
in its own Scheduler, as merge would otherwise attempt to drain it before subscribing to
another source.

@param sources the {@link Iterable} of sources to merge (will be lazily iterated on subscribe)
@param <I> The source type of the data sequence

@return a merged {@link Flux}