public static <T1, T2> Flux<Tuple2<T1, T2>> zip(Publisher<? extends T1> source1, Publisher<? extends T2> source2) {
		return zip(source1, source2, tuple2Function());
	}
public static <T1, T2> Flux<Tuple2<T1, T2>> zip(Publisher<? extends T1> source1, Publisher<? extends T2> source2) {
		return zip(source1, source2, tuple2Function());
	}
public static < T1 , T2 > Flux < Tuple2 < T1 , T2 > > zip ( Publisher < ? extends T1 > source1 , Publisher < ? extends T2 > source2 ) { return zip ( source1 , source2 , tuple2Function ( ) ) ; }
Zip two sources together, that is to say wait for all the sources to emit one
element and combine these elements once into a {@link Tuple2}.
The operator will continue doing so until any of the sources completes.
Errors will immediately be forwarded.
This "Step-Merge" processing is especially useful in Scatter-Gather scenarios.
<p>
<img class="marble" src="doc-files/marbles/zipFixedSourcesForFlux.svg" alt="">

@param source1 The first {@link Publisher} source to zip.
@param source2 The second {@link Publisher} source to zip.
@param <T1> type of the value from source1
@param <T2> type of the value from source2

@return a zipped {@link Flux}
Zip two sources together that is to say wait for all the sources to emit one element and combine these elements once into a { @link Tuple2 } . The operator will continue doing so until any of the sources completes . Errors will immediately be forwarded . This Step - Merge processing is especially useful in Scatter - Gather scenarios . <p > <img class = marble src = doc - files / marbles / zipFixedSourcesForFlux . svg alt = >