reactor-core/src/main/java/reactor/core/publisher/ParallelFlux.java
public static <T> ParallelFlux<T> from(Publisher<? extends T> source,
			int parallelism,
			int prefetch,
			Supplier<Queue<T>> queueSupplier) {
		Objects.requireNonNull(queueSupplier, "queueSupplier");
		Objects.requireNonNull(source, "source");

		return onAssembly(new ParallelSource<>(source,
				parallelism,
				prefetch, queueSupplier));
	}
public static <T> ParallelFlux<T> from(Publisher<? extends T> source,
			int parallelism,
			int prefetch,
			Supplier<Queue<T>> queueSupplier) {
		Objects.requireNonNull(queueSupplier, "queueSupplier");
		Objects.requireNonNull(source, "source");

		return onAssembly(new ParallelSource<>(source,
				parallelism,
				prefetch, queueSupplier));
	}
Take a Publisher and prepare to consume it on {@code parallelism} number of 'rails'
and in a round-robin fashion and use custom prefetch amount and queue
for dealing with the source Publisher's values.

@param <T> the value type
@param source the source Publisher
@param parallelism the number of parallel rails
@param prefetch the number of values to prefetch from the source
@param queueSupplier the queue structure supplier to hold the prefetched values
from the source until there is a rail ready to process it.

@return the new {@link ParallelFlux} instance