reactor-core/src/main/java/reactor/core/publisher/Flux.java
public final <R> Flux<R> concatMapIterable(Function<? super T, ? extends Iterable<? extends R>> mapper) {
		return concatMapIterable(mapper, Queues.XS_BUFFER_SIZE);
	}
public final <R> Flux<R> concatMapIterable(Function<? super T, ? extends Iterable<? extends R>> mapper) {
		return concatMapIterable(mapper, Queues.XS_BUFFER_SIZE);
	}
public final < R > Flux < R > concatMapIterable ( Function < ? super T , ? extends Iterable < ? extends R > > mapper ) { return concatMapIterable ( mapper , Queues . XS_BUFFER_SIZE ) ; }
Transform the items emitted by this {@link Flux} into {@link Iterable}, then flatten the elements from those by
concatenating them into a single {@link Flux}.

<p>
<img class="marble" src="doc-files/marbles/concatMapIterable.svg" alt="">
<p>
Note that unlike {@link #flatMap(Function)} and {@link #concatMap(Function)}, with Iterable there is
no notion of eager vs lazy inner subscription. The content of the Iterables are all played sequentially.
Thus {@code flatMapIterable} and {@code concatMapIterable} are equivalent offered as a discoverability
improvement for users that explore the API with the concat vs flatMap expectation.

@reactor.discard This operator discards elements it internally queued for backpressure upon cancellation.

@param mapper the {@link Function} to transform input sequence into N {@link Iterable}
@param <R> the merged output sequence type

@return a concatenation of the values from the Iterables obtained from each element in this {@link Flux}
Transform the items emitted by this { @link Flux } into { @link Iterable } then flatten the elements from those by concatenating them into a single { @link Flux } .