public interface EventStorageEngine
Modifier and Type | Method and Description |
---|---|
default void |
appendEvents(EventMessage<?>... events)
Append one or more events to the event storage.
|
void |
appendEvents(List<? extends EventMessage<?>> events)
Append a list of events to the event storage.
|
default Optional<Long> |
lastSequenceNumberFor(String aggregateIdentifier)
Returns the last known sequence number for the given
aggregateIdentifier . |
default DomainEventStream |
readEvents(String aggregateIdentifier)
Get a
DomainEventStream containing all events published by the aggregate with given aggregateIdentifier . |
DomainEventStream |
readEvents(String aggregateIdentifier,
long firstSequenceNumber)
Get a
DomainEventStream containing all events published by the aggregate with given aggregateIdentifier starting with the first event having a sequence number that is equal or larger than the
given firstSequenceNumber . |
Stream<? extends TrackedEventMessage<?>> |
readEvents(TrackingToken trackingToken,
boolean mayBlock)
Open an event stream containing all events stored since given tracking token.
|
Optional<DomainEventMessage<?>> |
readSnapshot(String aggregateIdentifier)
Try to load a snapshot event of the aggregate with given
aggregateIdentifier . |
void |
storeSnapshot(DomainEventMessage<?> snapshot)
Store an event that contains a snapshot of an aggregate.
|
default void appendEvents(EventMessage<?>... events)
Note that all events should have a unique event identifier. When storing domain events
events should also have a unique combination of aggregate id and sequence number.
By default this method creates a list of the offered events and then invokes appendEvents(List)
.
events
- Events to append to the event storagevoid appendEvents(List<? extends EventMessage<?>> events)
Note that all events should have a unique event identifier. When storing domain events
events should also have a unique combination of aggregate id and sequence number.
events
- Events to append to the event storagevoid storeSnapshot(DomainEventMessage<?> snapshot)
snapshot
- The snapshot event of the aggregate that is to be storedStream<? extends TrackedEventMessage<?>> readEvents(TrackingToken trackingToken, boolean mayBlock)
trackingToken
of null
to open
a stream containing all available events.
If the value of the given mayBlock
is true
the returned stream is allowed to block while waiting
for new event messages if the end of the stream is reached.
trackingToken
- Object describing the global index of the last processed event or null
to create a
stream of all events in the storemayBlock
- If true
the storage engine may optionally choose to block to wait for new event
messages if the end of the stream is reached.default DomainEventStream readEvents(String aggregateIdentifier)
DomainEventStream
containing all events published by the aggregate with given aggregateIdentifier
. By default calling this method is shorthand for an invocation of
readEvents(String, long)
with a sequence number of 0.
The returned stream is finite, i.e. it should not block to wait for further events if the end of the event stream of the aggregate is reached.
aggregateIdentifier
- The identifier of the aggregate to return an event stream forDomainEventStream readEvents(String aggregateIdentifier, long firstSequenceNumber)
DomainEventStream
containing all events published by the aggregate with given aggregateIdentifier
starting with the first event having a sequence number that is equal or larger than the
given firstSequenceNumber
.
The returned stream is finite, i.e. it should not block to wait for further events if the end of the event stream of the aggregate is reached.
aggregateIdentifier
- The identifier of the aggregatefirstSequenceNumber
- The expected sequence number of the first event in the returned streamOptional<DomainEventMessage<?>> readSnapshot(String aggregateIdentifier)
aggregateIdentifier
. If the storage engine has
no snapshot event of the aggregate, an empty Optional is returned.aggregateIdentifier
- The identifier of the aggregatedefault Optional<Long> lastSequenceNumberFor(String aggregateIdentifier)
aggregateIdentifier
.
While it's recommended to use the sequence numbers from the DomainEventStream
, there are cases where
knowing the sequence number is required, without having read the actual events. In such case, this method is a
viable alternative.
aggregateIdentifier
- The identifier to find the last sequence number forCopyright © 2010–2018. All rights reserved.