Java API: A GraphStage represents a reusable graph stream processing stage.
Java API: A GraphStage represents a reusable graph stream processing stage.
Extend this AbstractGraphStageWithMaterializedValue
if you want to provide a materialized value,
represented by the type parameter M
. If your GraphStage does not need to provide a materialized
value you can instead extende GraphStage which materializes a NotUsed value.
A GraphStage consists of a Shape which describes its input and output ports and a factory function that creates a GraphStageLogic which implements the processing logic that ties the ports together.
See also GraphStageWithMaterializedValue for Scala DSL for this stage.
Java API: callbacks for an input port where termination logic is predefined (completing when upstream completes, failing when upstream fails).
Java API: callback combination for output and input ports where termination logic is predefined (completing when upstream completes, failing when upstream fails, completing when downstream cancels).
Java API: callbacks for an output port where termination logic is predefined (completing when downstream cancels).
An asynchronous callback holder that is attached to a GraphStageLogic.
An asynchronous callback holder that is attached to a GraphStageLogic. Invoking AsyncCallback#invoke will eventually lead to the registered handler being called.
A GraphStage represents a reusable graph stream processing stage.
A GraphStage represents a reusable graph stream processing stage.
A GraphStage consists of a Shape which describes its input and output ports and a factory function that creates a GraphStageLogic which implements the processing logic that ties the ports together.
Represents the processing logic behind a GraphStage.
Represents the processing logic behind a GraphStage. Roughly speaking, a subclass of GraphStageLogic is a collection of the following parts: * A set of InHandler and OutHandler instances and their assignments to the Inlets and Outlets of the enclosing GraphStage * Possible mutable state, accessible from the InHandler and OutHandler callbacks, but not from anywhere else (as such access would not be thread-safe) * The lifecycle hooks preStart() and postStop() * Methods for performing stream processing actions, like pulling or pushing elements
The stage logic is completed once all its input and output ports have been closed. This can be changed by
setting setKeepGoing
to true.
The postStop
lifecycle hook on the logic itself is called once all ports are closed. This is the only tear down
callback that is guaranteed to happen, if the actor system or the materializer is terminated the handlers may never
see any callbacks to onUpstreamFailure
, onUpstreamFinish
or onDownstreamFinish
. Therefore stage resource
cleanup should always be done in postStop
.
Java API: GraphStageLogic with StageLogging.
Scala API: A GraphStage represents a reusable graph stream processing stage.
Scala API: A GraphStage represents a reusable graph stream processing stage.
Extend this GraphStageWithMaterializedValue
if you want to provide a materialized value,
represented by the type parameter M
. If your GraphStage does not need to provide a materialized
value you can instead extende GraphStage which materializes a NotUsed value.
A GraphStage consists of a Shape which describes its input and output ports and a factory function that creates a GraphStageLogic which implements the processing logic that ties the ports together.
See also AbstractGraphStageWithMaterializedValue for Java DSL for this stage.
Collection of callbacks for an input port of a GraphStage
Collection of callbacks for an output port of a GraphStage
Simple way to obtain a LoggingAdapter when used together with an ActorMaterializer.
Simple way to obtain a LoggingAdapter when used together with an ActorMaterializer. If used with a different materializer NoLogging will be returned.
Make sure to only access log
from GraphStage callbacks (such as pull
, push
or the async-callback).
Note, abiding to akka.stream.ActorAttributes.logLevels has to be done manually,
the logger itself is configured based on the logSource provided to it. Also, the log
itself would not know if you're calling it from a "on element" context or not, which is why
these decisions have to be handled by the stage itself.
Java API: TimerGraphStageLogic with StageLogging.