Package org.axonframework.messaging.core
Class AbstractMessageStream<M extends Message>
java.lang.Object
org.axonframework.messaging.core.AbstractMessageStream<M>
- All Implemented Interfaces:
MessageStream<M>
- Direct Known Subclasses:
QueueMessageStream
@Internal
public abstract class AbstractMessageStream<M extends Message>
extends Object
implements MessageStream<M>
Abstract implementation of
MessageStream that provides basic state management for completion, errors, and
callbacks.- Since:
- 5.1.0
- Author:
- Jan Galinski
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.axonframework.messaging.core.MessageStream
MessageStream.Empty<M extends Message>, MessageStream.Entry<M extends Message>, MessageStream.Single<M extends Message> -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected voidcomplete()Completes the stream normally.protected voidcompleteExceptionally(Throwable throwable) Completes the stream with the giventhrowable.error()Indicates whether any error has been reported in this stream.protected voidInvokes the registered callback safely, catching any exceptions and completing the stream with that exception.booleanIndicates whether this stream has been completed.voidsetCallback(Runnable callback) Registers the callback to invoke whenentriesare available for reading or when the stream completes (either normally or with an error).Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.axonframework.messaging.core.MessageStream
cast, close, concatWith, filter, first, hasNextAvailable, ignoreEntries, map, mapMessage, next, onClose, onComplete, onErrorContinue, onNext, peek, reduce
-
Constructor Details
-
AbstractMessageStream
public AbstractMessageStream()
-
-
Method Details
-
setCallback
Description copied from interface:MessageStreamRegisters the callback to invoke whenentriesare available for reading or when the stream completes (either normally or with an error). An invocation of the callback does not in any way guarantee that entries are indeed available, or that the stream has indeed been completed. Implementations may choose to suppress repeated invocations of the callback if no entries have been read in the meantime.Any previously registered callback is replaced with the given
callback.The callback is called on an arbitrary thread, and it should keep work performed on this thread to a minimum as this may interfere with other callbacks handled by the same thread. Any exception thrown by the callback will result in the stream completing with this exception as the error.
- Specified by:
setCallbackin interfaceMessageStream<M extends Message>- Parameters:
callback- The callback to invoke whenentriesare available for reading, or the stream completes.
-
invokeCallbackSafely
protected void invokeCallbackSafely()Invokes the registered callback safely, catching any exceptions and completing the stream with that exception. -
complete
protected void complete()Completes the stream normally. -
completeExceptionally
Completes the stream with the giventhrowable.- Parameters:
throwable- The error that caused the stream to complete.
-
error
Description copied from interface:MessageStreamIndicates whether any error has been reported in this stream. Implementations may choose to not return any error here until allentriesthat were available for reading before any error occurred have been consumed.- Specified by:
errorin interfaceMessageStream<M extends Message>- Returns:
- An optional containing the possible error this stream completed with.
-
isCompleted
public boolean isCompleted()Description copied from interface:MessageStreamIndicates whether this stream has been completed. A completed stream will never returnentriesfromMessageStream.next(), andMessageStream.hasNextAvailable()will always returnfalse. If the stream completed with an error,MessageStream.error()will report so.- Specified by:
isCompletedin interfaceMessageStream<M extends Message>- Returns:
trueif the stream completed, otherwisefalse.
-