Event log actor.
Event log actor.
Global unique actor id.
Global unique actor id.
Command handler.
Command handler.
Event handler.
Event handler.
Optional aggregate id.
Optional aggregate id. It is used for routing DurableEvents to event-sourced destinations
which can be EventsourcedViews or EventsourcedActors. By default, an event is routed
to an event-sourced destination with an undefined aggregateId
. If a destination's aggregateId
is defined it will only receive events with a matching aggregate id in
DurableEvent#destinationAggregateIds.
Returns the command BehaviorContext.
Returns the command BehaviorContext.
Returns the event BehaviorContext.
Returns the event BehaviorContext.
Emitter aggregate id of the last handled event.
Emitter aggregate id of the last handled event.
Emitter id of the last handled event.
Emitter id of the last handled event.
Id of the local event log that initially wrote the event.
Id of the local event log that initially wrote the event.
Sequence number of the last handled event.
Sequence number of the last handled event.
Wall-clock timestamp of the last handled event.
Wall-clock timestamp of the last handled event.
Vector timestamp of the last handled event.
Vector timestamp of the last handled event.
This actor's logging adapter.
This actor's logging adapter.
Recovery completion handler.
Recovery completion handler. If called with a Failure
, the actor will be stopped in
any case, regardless of the action taken by the returned handler. The default handler
implementation does nothing and can be overridden by implementations.
Snapshot handler.
Snapshot handler.
Asynchronously persists the given event
and calls handler
with the persist result.
Asynchronously persists the given event
and calls handler
with the persist result. If
persistence was successful, onEvent
is called with the persisted event before handler
is called. Both, onEvent
and handler
, are called on a dispatcher thread of this actor,
hence, it is safe to modify internal state within them. The handler
can also obtain a
reference to the initial command sender via sender()
.
By default, the event is routed to event-sourced destinations with an undefined aggregateId
.
If this actor's aggregateId
is defined it is additionally routed to all actors with the same
aggregateId
. Further routing destinations can be defined with the customDestinationAggregateIds
parameter.
Asynchronously persists a sequence of events
and calls handler
with the persist result
for each event in the sequence.
Asynchronously persists a sequence of events
and calls handler
with the persist result
for each event in the sequence. If persistence was successful, onEvent
is called with a
persisted event before handler
is called. Both, onEvent
and handler
, are called on a
dispatcher thread of this actor, hence, it is safe to modify internal state within them.
The handler
can also obtain a reference to the initial command sender via sender()
. The
onLast
handler is additionally called for the last event in the sequence.
By default, the event is routed to event-sourced destinations with an undefined aggregateId
.
If this actor's aggregateId
is defined it is additionally routed to all actors with the same
aggregateId
. Further routing destinations can be defined with the customDestinationAggregateIds
parameter.
Sets recovering
to false
before calling super.postStop
.
Sets recovering
to false
before calling super.postStop
.
Sets recovering
to false
before calling super.preRestart
.
Sets recovering
to false
before calling super.preRestart
.
Initiates recovery.
Initiates recovery.
Initialization behavior.
Initialization behavior.
Returns true
if this actor is currently recovering internal state by consuming
replayed events from the event log.
Returns true
if this actor is currently recovering internal state by consuming
replayed events from the event log. Returns false
after recovery completed and
the actor switches to consuming live events.
Maximum number of events to be replayed to this actor before replaying is suspended.
Maximum number of events to be replayed to this actor before replaying is suspended. A suspended replay
is resumed automatically after all replayed events haven been handled by this actor's event handler
(= backpressure). The default value for the maximum replay batch size is given by configuration item
eventuate.log.replay-batch-size
. Configured values can be overridden by overriding this method.
Override to provide an application-defined log sequence number from which event replay will start.
Override to provide an application-defined log sequence number from which event replay will start.
If Some(snr)
is returned snapshot loading will be skipped and replay will start from
the given sequence number snr
.
If None
is returned the actor proceeds with the regular snapshot loading procedure.
Asynchronously saves the given snapshot
and calls handler
with the generated
snapshot metadata.
Asynchronously saves the given snapshot
and calls handler
with the generated
snapshot metadata. The handler
can obtain a reference to the initial message
sender with sender()
.
Returns the snapshot BehaviorContext.
Returns the snapshot BehaviorContext.
Adds the current command to the user's command stash.
Adds the current command to the user's command stash. Must not be used in the event handler
or persist
handler.
State synchronization.
State synchronization. If set to true
, commands see internal state that is consistent
with the event log. This is achieved by stashing new commands if this actor is currently
writing events. If set to false
, commands see internal state that is eventually
consistent with the event log.
Prepends all stashed commands to the actor's mailbox and then clears the command stash.
Prepends all stashed commands to the actor's mailbox and then clears the command stash.
Has no effect if the actor is recovering i.e. if recovering
returns true
.
An
EventsourcedActor
is an EventsourcedView that can also write new events to its event log. New events are written with the asynchronous persist and persistN methods. They must only be used within theonCommand
command handler. After successful persistence, theonEvent
handler is automatically called with the persisted event(s). TheonEvent
handler is the place where actor state may be updated. TheonCommand
handler should not update actor state but only read it e.g. for command validation.EventsourcedActor
s that want to persist new events within theonEvent
handler should additionally mixin the PersistOnEvent trait and use the persistOnEvent method.PersistOnEvent
EventsourcedView