Class BroadcastHub$

java.lang.Object

akka.stream.javadsl.BroadcastHub$

public class BroadcastHub$
extends java.lang.Object

A BroadcastHub is a special streaming hub that is able to broadcast streamed elements to a dynamic set of consumers.
It consists of two parts, a Sink and a Source. The Sink broadcasts elements from a producer to the
actually live consumers it has. Once the producer has been materialized, the Sink it feeds into returns a
materialized value which is the corresponding Source. This Source can be materialized an arbitrary number
of times, where each of the new materializations will receive their elements from the original Sink.

Constructor Detail

BroadcastHub$

Method Detail

of

Creates a Sink that receives elements from its upstream producer and broadcasts them to a dynamic set
of consumers. After the Sink returned by this method is materialized, it returns a Source as materialized
value. This Source can be materialized an arbitrary number of times and each materialization will receive the
broadcast elements from the original Sink.

Every new materialization of the Sink results in a new, independent hub, which materializes to its own
Source for consuming the Sink of that materialization.

If the original Sink is failed, then the failure is immediately propagated to all of its materialized
Sources (possibly jumping over already buffered elements). If the original Sink is completed, then
all corresponding Sources are completed. Both failure and normal completion is "remembered" and later
materializations of the Source will see the same (failure or completion) state. Sources that are
cancelled are simply removed from the dynamic set of consumers.

Parameters:

clazz - Type of elements this hub emits and consumes

bufferSize - Buffer size used by the producer. Gives an upper bound on how "far" from each other two
concurrent consumers can be in terms of element. If the buffer is full, the producer
is backpressured. Must be a power of two and less than 4096.