io.smallrye.reactive.messaging.providers.helpers.BroadcastHelper Maven / Gradle / Ivy
package io.smallrye.reactive.messaging.providers.helpers;
import org.eclipse.microprofile.reactive.messaging.Message;
import io.smallrye.mutiny.Multi;
public class BroadcastHelper {
private BroadcastHelper() {
// Avoid direct instantiation.
}
/**
*
* Wraps an existing {@code Publisher} for broadcasting.
*
*
* @param publisher The publisher to be wrapped
* @param numberOfSubscriberBeforeConnecting Number of subscribers that must be present before broadcast occurs.
* A value of 0 means any number of subscribers will trigger the broadcast.
* @return The wrapped {@code Publisher} in a new {@code PublisherBuilder}
*/
public static Multi> broadcastPublisher(Multi> publisher,
int numberOfSubscriberBeforeConnecting) {
if (numberOfSubscriberBeforeConnecting != 0) {
return publisher
.broadcast().toAtLeast(numberOfSubscriberBeforeConnecting);
} else {
return publisher.broadcast().toAllSubscribers();
}
}
}