Unlike StashingHandlerInvocation this one does not force actor to stash commands. Originates from PersistAsync<TEvent>(TEvent, Action<TEvent>) or DeferAsync<TEvent>(TEvent, Action<TEvent>) method calls.
Persistent actor type that sends messages with at-least-once delivery semantics to destinations. It takes care of re-sending messages when they haven't been confirmed withing expected timeout. Use the Deliver(ActorPath, Func<Int64, Object>, Boolean) method to send a message to a destination. Call the ConfirmDelivery(Int64) method when destination has replied with a confirmation message.
At-least-once delivery implies that the original message send order is not always retained and the destination may receive duplicate messages due to possible resends.
The interval between redelivery attempts can be defined with RedeliverInterval. After a number of delivery attempts a UnconfirmedWarning message will be sent to Self. The re-sending will continue, but you may choose ConfirmDelivery(Int64) to cancel re-sending.
This actor type has a state consisting of unconfirmed messages and a sequence number. It does not store this state itself. You must persist events corresponding to the Deliver(ActorPath, Func<Int64, Object>, Boolean) and ConfirmDelivery(Int64) invocations from your PersistentActor so that the state can be restored by calling the same methods during the recovery phase of the PersistentActor. Sometimes these events can be derived from other business level events, and sometimes you must create separate events. During recovery calls to Deliver(ActorPath, Func<Int64, Object>, Boolean) will not send out the message, but it will be sent later if no matching ConfirmDelivery(Int64) was performed.
Support for snapshot is provided by GetDeliverySnapshot() and SetDeliverySnapshot(AtLeastOnceDeliverySnapshot). The AtLeastOnceDeliverySnapshot contains the full delivery state, including unconfirmed messages. If you need a custom snapshot for other parts of the actor state you must also include the AtLeastOnceDeliverySnapshot. It is serialized using protobuf with the ordinary Akka serialization mechanism. It is easiest to include the bytes of the AtLeastOnceDeliverySnapshot as a blob in your custom snapshot.
Receive persistent actor type, that sends messages with at-least-once delivery semantics to it's destinations.
Snapshot of current AtLeastOnceDeliveryActor state. Can be retrieved with GetDeliverySnapshot() and saved with SaveSnapshot(Object). During recovery the snapshot received in SnapshotOffer should be sent with SetDeliverySnapshot(AtLeastOnceDeliverySnapshot).
Represents a single atomic write to an Akka.Persistence journal.
Reply message to failed DeleteMessages(Int64) request.
Reply message to a successful DeleteMessages(Int64) request.
Request to delete all persistent messages with sequence numbers up to
Instructs a snapshot store to delete a snapshot.
Sent to PersistentActor after failed deletion of a snapshot.
Instructs a snapshot store to delete all snapshots that match provided criteria.
Sent to PersistentActor after failed deletion of a range of snapshots.
Sent to PersistentActor after successful deletion of a specified range of snapshots.
Sent to PersistentActor after successful deletion of a snapshot.
Discard the message to DeadLetterActorRef
Instructs a snapshot store to load the snapshot.
Reply message to a failed LoadSnapshot request.
Response to a LoadSnapshot message.
Reply message to a WriteMessages with a non-persistent message.
This exception is thrown when the MaxUnconfirmedMessages threshold has been exceeded.
Launches the Akka.Persistence runtime
Persistent actor - can be used to implement command or eventsourcing.
Recovery mode configuration object to be return in Recovery
By default recovers from latest snapshot replays through to the last available event (last sequenceNr).
Recovery will start from a snapshot if the persistent actor has previously saved one or more snapshots and at least one of these snapshots matches the specified FromSnapshot criteria. Otherwise, recovery will start from scratch by replaying all stored events.
If recovery starts from a snapshot, the PersistentActor is offered that snapshot with a SnapshotOffer message, followed by replayed messages, if any, that are younger than the snapshot, up to the specified upper sequence number bound (ToSequenceNr).
Sent to a PersistentActor when the journal replay has been finished.
It includes the highest stored sequence number of a given persistent actor. Note that the replay might have been limited to a lower sequence number.
Message used to detect that recovery timed out.
Reply message to a ReplayMessages request. A separate reply is sent to the requester for each replayed message.
Request to replay messages to the PersistentActor.
Reply message to a failed ReplayMessages request. This reply is sent to the requester if a replay could not be successfully completed.
Reply to sender with predefined response, and discard the received message silently.
Instructs a snapshot store to save a snapshot.
Sent to PersistentActor after failed saving a snapshot.
Sent to PersistentActor after successful saving of a snapshot.
A selected snapshot matching SnapshotSelectionCriteria.
Metadata for all persisted snapshot records.
Offers a PersistentActor a previously saved snapshot during recovery. This offer is received before any further replayed messages.
Selection criteria for loading and deleting a snapshots.
Forces actor to stash incoming commands until all invocations are handled.
Throw StashOverflowException, hence the persistent actor will start recovery if guarded by default supervisor strategy. Be careful if used together with Persist<TEvent>(TEvent, Action<TEvent>) or PersistAll<TEvent>(IEnumerable<TEvent>, Action<TEvent>) or has many messages needed to replay.
Message should be sent after WarnAfterNumberOfUnconfirmedAttempts limit will is reached.
Persistent actor - can be used to implement command or eventsourcing.
Reply message to a rejected WriteMessages request. The write of this message was rejected before it was stored, e.g. because it could not be serialized. For each contained IPersistentRepresentation message in the request, a separate reply is sent to the requester.
Request to write messages.
Marker interface for internal journal messages
Internal journal command
Internal journal acknowledgement
Marker interface for internal persistence extension messages.
Helps persistence plugin developers to differentiate internal persistence extension messages from their custom plugin messages.
Journal messages need not be serialization verified as the Journal Actor should always be a local Actor (and serialization is performed by plugins). One notable exception to this is the shared journal used for testing.
Marks messages which can then be resequenced by AsyncWriteJournal.
In essence it is either an Akka.Persistence.NonPersistentMessage or AtomicWrite
Representation of a persistent message in the journal plugin API.
Marker interface for internal snapshot messages
Internal snapshot command
Internal snapshot acknowledgement
Snapshot API on top of the internal snapshot protocol.
This defines how to handle the current received message which failed to stash, when the size of the Stash exceeding the capacity of the Stash.
Implement this interface in order to configure the IStashOverflowStrategy for the internal stash of the persistent actor. An instance of this class must be instantiable using a no-args constructor.