Class MergeHub
- java.lang.Object
-
- org.apache.pekko.stream.javadsl.MergeHub
-
public class MergeHub extends java.lang.Object
A MergeHub is a special streaming hub that is able to collect streamed elements from a dynamic set of producers. It consists of two parts, aSource
and aSink
. TheSource
streams the element to a consumer from its merged inputs. Once the consumer has been materialized, theSource
returns a materialized value which is the correspondingSink
. ThisSink
can then be materialized arbitrary many times, where each of the new materializations will feed its consumed elements to the originalSource
.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interface
MergeHub.DrainingControl
A DrainingControl object is created during the materialization of a MergeHub and allows to initiate the draining and eventual completion of the Hub from the outside.
-
Constructor Summary
Constructors Constructor Description MergeHub()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static <T> Source<T,Sink<T,NotUsed>>
of(java.lang.Class<T> clazz)
Creates aSource
that emits elements merged from a dynamic set of producers.static <T> Source<T,Sink<T,NotUsed>>
of(java.lang.Class<T> clazz, int perProducerBufferSize)
Creates aSource
that emits elements merged from a dynamic set of producers.static <T> Source<T,Pair<Sink<T,NotUsed>,MergeHub.DrainingControl>>
withDraining(java.lang.Class<T> clazz)
Creates aSource
that emits elements merged from a dynamic set of producers.static <T> Source<T,Pair<Sink<T,NotUsed>,MergeHub.DrainingControl>>
withDraining(java.lang.Class<T> clazz, int perProducerBufferSize)
Creates aSource
that emits elements merged from a dynamic set of producers.
-
-
-
Method Detail
-
of
public static <T> Source<T,Sink<T,NotUsed>> of(java.lang.Class<T> clazz, int perProducerBufferSize)
Creates aSource
that emits elements merged from a dynamic set of producers. After theSource
returned by this method is materialized, it returns aSink
as a materialized value. ThisSink
can be materialized arbitrary many times and each of the materializations will feed the elements into the originalSource
.Every new materialization of the
Source
results in a new, independent hub, which materializes to its ownSink
for feeding that materialization.Completed or failed
Sink
s are simply removed. Once theSource
is cancelled, the Hub is considered closed and any new producers using theSink
will be cancelled.- Parameters:
clazz
- Type of elements this hub emits and consumesperProducerBufferSize
- Buffer space used per producer.
-
withDraining
public static <T> Source<T,Pair<Sink<T,NotUsed>,MergeHub.DrainingControl>> withDraining(java.lang.Class<T> clazz, int perProducerBufferSize)
Creates aSource
that emits elements merged from a dynamic set of producers. After theSource
returned by this method is materialized, it returns aSink
as a materialized value. ThisSink
can be materialized arbitrarily many times and each of the materializations will feed the elements into the originalSource
.Every new materialization of the
Source
results in a new, independent hub, which materializes to its ownSink
for feeding that materialization.Completed or failed
Sink
s are simply removed. Once theSource
is cancelled, the Hub is considered closed and any new producers using theSink
will be cancelled.The materialized
MergeHub.DrainingControl
can be used to drain the Hub: any new produces using theSink
will be cancelled and the Hub will be closed completing theSource
as soon as all currently connected producers complete.- Parameters:
clazz
- Type of elements this hub emits and consumesperProducerBufferSize
- Buffer space used per producer. Default value is 16.
-
of
public static <T> Source<T,Sink<T,NotUsed>> of(java.lang.Class<T> clazz)
Creates aSource
that emits elements merged from a dynamic set of producers. After theSource
returned by this method is materialized, it returns aSink
as a materialized value. ThisSink
can be materialized arbitrary many times and each of the materializations will feed the elements into the originalSource
.Every new materialization of the
Source
results in a new, independent hub, which materializes to its ownSink
for feeding that materialization.Completed or failed
Sink
s are simply removed. Once theSource
is cancelled, the Hub is considered closed and any new producers using theSink
will be cancelled.- Parameters:
clazz
- Type of elements this hub emits and consumes
-
withDraining
public static <T> Source<T,Pair<Sink<T,NotUsed>,MergeHub.DrainingControl>> withDraining(java.lang.Class<T> clazz)
Creates aSource
that emits elements merged from a dynamic set of producers. After theSource
returned by this method is materialized, it returns aSink
as a materialized value. ThisSink
can be materialized arbitrarily many times and each of the materializations will feed the elements into the originalSource
.Every new materialization of the
Source
results in a new, independent hub, which materializes to its ownSink
for feeding that materialization.Completed or failed
Sink
s are simply removed. Once theSource
is cancelled, the Hub is considered closed and any new producers using theSink
will be cancelled.The materialized
MergeHub.DrainingControl
can be used to drain the Hub: any new produces using theSink
will be cancelled and the Hub will be closed completing theSource
as soon as all currently connected producers complete.- Parameters:
clazz
- Type of elements this hub emits and consumes
-
-