Interface AtLeastOnceDeliveryLike
- All Superinterfaces:
Actor
,Eventsourced
,PersistenceIdentity
,PersistenceRecovery
,PersistenceStash
,RequiresMessageQueue<DequeBasedMessageQueueSemantics>
,Snapshotter
,Stash
,StashFactory
,StashSupport
,UnrestrictedStash
- All Known Subinterfaces:
AtLeastOnceDelivery
- All Known Implementing Classes:
AbstractPersistentActorWithAtLeastOnceDelivery
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.apache.pekko.actor.Actor
Actor.emptyBehavior$, Actor.ignoringBehavior$
Nested classes/interfaces inherited from interface org.apache.pekko.persistence.Eventsourced
Eventsourced.AsyncHandlerInvocation, Eventsourced.AsyncHandlerInvocation$, Eventsourced.PendingHandlerInvocation, Eventsourced.RecoveryTick, Eventsourced.RecoveryTick$, Eventsourced.StashingHandlerInvocation, Eventsourced.StashingHandlerInvocation$, Eventsourced.State
-
Method Summary
Modifier and TypeMethodDescriptionvoid
INTERNAL APIvoid
aroundPreRestart
(Throwable reason, scala.Option<Object> message) INTERNAL APIvoid
aroundReceive
(scala.PartialFunction<Object, scala.runtime.BoxedUnit> receive, Object message) INTERNAL APIvoid
boolean
confirmDelivery
(long deliveryId) Call this method when a message has been confirmed by the destination, or to abort re-sending.void
deliverySequenceNr_$eq
(long x$1) Full state of theAtLeastOnceDelivery
.void
internalDeliver
(ActorPath destination, scala.Function1<Object, Object> deliveryIdToMessage) INTERNAL APIvoid
internalDeliver
(ActorSelection destination, scala.Function1<Object, Object> deliveryIdToMessage) INTERNAL APIint
Maximum number of unconfirmed messages that this actor is allowed to hold in memory.long
int
Number of messages that have not been confirmed yet.void
INTERNAL API.scala.concurrent.duration.FiniteDuration
Interval between redelivery attempts.void
void
redeliverTask_$eq
(scala.Option<Cancellable> x$1) int
Maximum number of unconfirmed messages that will be sent at each redelivery burst (burst frequency is half of the redelivery interval).void
send
(long deliveryId, org.apache.pekko.persistence.AtLeastOnceDelivery.Internal.Delivery d, long timestamp) void
If snapshot fromgetDeliverySnapshot()
was saved it will be received during recovery in aSnapshotOffer
message and should be set with this method.void
void
INTERNAL APIvoid
super$aroundPreRestart
(Throwable reason, scala.Option<Object> message) INTERNAL APIvoid
super$aroundReceive
(scala.PartialFunction<Object, scala.runtime.BoxedUnit> receive, Object message) INTERNAL APIvoid
void
unconfirmed_$eq
(scala.collection.immutable.SortedMap<Object, org.apache.pekko.persistence.AtLeastOnceDelivery.Internal.Delivery> x$1) int
After this number of delivery attempts anAtLeastOnceDelivery.UnconfirmedWarning
message will be sent toself
.Methods inherited from interface org.apache.pekko.actor.Actor
context, org$apache$pekko$actor$Actor$_setter_$context_$eq, org$apache$pekko$actor$Actor$_setter_$self_$eq, postRestart, preStart, receive, self, sender, supervisorStrategy
Methods inherited from interface org.apache.pekko.persistence.Eventsourced
_lastSequenceNr_$eq, aroundPostRestart, aroundPreStart, batchAtomicWrite, changeState, currentState_$eq, deleteMessages, eventBatch_$eq, flushBatch, flushJournalBatch, internalDefer, internalDeferAsync, internalDeleteMessagesBeforeSnapshot, internalPersist, internalPersistAll, internalPersistAllAsync, internalPersistAsync, journal, journalBatch_$eq, lastSequenceNr, log, nextSequenceNr, onPersistFailure, onPersistRejected, onRecoveryFailure, peekApplyHandler, pendingStashingPersistInvocations_$eq, receiveCommand, receiveRecover, recovering, recoveryFinished, recoveryRunning, recoveryStarted, requestRecoveryPermit, sendBatchedEventsToJournal, sequenceNr_$eq, setLastSequenceNr, snapshotSequenceNr, snapshotStore, snapshotterId, startRecovery, stash, stashInternally, super$aroundPostRestart, super$aroundPreStart, super$stash, super$unhandled, unhandled, unstashAll, unstashInternally, updateLastSequenceNr, waitingRecoveryPermit, writeEventFailed, writeEventRejected, writeEventSucceeded, writeInProgress_$eq
Methods inherited from interface org.apache.pekko.persistence.PersistenceIdentity
journalPluginId, persistenceId, snapshotPluginId
Methods inherited from interface org.apache.pekko.persistence.PersistenceRecovery
recovery
Methods inherited from interface org.apache.pekko.persistence.PersistenceStash
internalStashOverflowStrategy
Methods inherited from interface org.apache.pekko.persistence.Snapshotter
deleteSnapshot, deleteSnapshots, loadSnapshot, saveSnapshot
Methods inherited from interface org.apache.pekko.actor.StashFactory
createStash
Methods inherited from interface org.apache.pekko.actor.StashSupport
actorCell, clearStash, context, enqueueFirst, mailbox, org$apache$pekko$actor$StashSupport$_setter_$mailbox_$eq, prepend, self, theStash_$eq, unstash, unstashAll
Methods inherited from interface org.apache.pekko.actor.UnrestrictedStash
postStop, preRestart, super$postStop, super$preRestart
-
Method Details
-
aroundPostStop
void aroundPostStop()INTERNAL API- Specified by:
aroundPostStop
in interfaceActor
- Specified by:
aroundPostStop
in interfaceEventsourced
-
aroundPreRestart
INTERNAL API- Specified by:
aroundPreRestart
in interfaceActor
- Specified by:
aroundPreRestart
in interfaceEventsourced
-
aroundReceive
INTERNAL API- Specified by:
aroundReceive
in interfaceActor
- Specified by:
aroundReceive
in interfaceEventsourced
- Parameters:
receive
- current behavior.message
- current message.
-
cancelRedeliveryTask
void cancelRedeliveryTask() -
confirmDelivery
boolean confirmDelivery(long deliveryId) Call this method when a message has been confirmed by the destination, or to abort re-sending.- Returns:
true
the first time thedeliveryId
is confirmed, i.e.false
for duplicate confirm- See Also:
-
#deliver
-
deliverySequenceNr_$eq
void deliverySequenceNr_$eq(long x$1) -
getDeliverySnapshot
AtLeastOnceDelivery.AtLeastOnceDeliverySnapshot getDeliverySnapshot()Full state of theAtLeastOnceDelivery
. It can be saved withSnapshotter.saveSnapshot(java.lang.Object)
. During recovery the snapshot received inSnapshotOffer
should be set withsetDeliverySnapshot(org.apache.pekko.persistence.AtLeastOnceDelivery.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 theAtLeastOnceDeliverySnapshot
. It is serialized using protobuf with the ordinary Akka serialization mechanism. It is easiest to include the bytes of theAtLeastOnceDeliverySnapshot
as a blob in your custom snapshot. -
internalDeliver
INTERNAL API -
internalDeliver
void internalDeliver(ActorSelection destination, scala.Function1<Object, Object> deliveryIdToMessage) INTERNAL API -
maxUnconfirmedMessages
int maxUnconfirmedMessages()Maximum number of unconfirmed messages that this actor is allowed to hold in memory. If this number is exceed#deliver
will not accept more messages and it will throwAtLeastOnceDelivery.MaxUnconfirmedMessagesExceededException
.The default value can be configured with the
pekko.persistence.at-least-once-delivery.max-unconfirmed-messages
configuration key. This method can be overridden by implementation classes to return non-default values. -
nextDeliverySequenceNr
long nextDeliverySequenceNr() -
numberOfUnconfirmed
int numberOfUnconfirmed()Number of messages that have not been confirmed yet. -
onReplaySuccess
void onReplaySuccess()Description copied from interface:Eventsourced
INTERNAL API. Called whenever a message replay succeeds. May be implemented by subclass.- Specified by:
onReplaySuccess
in interfaceEventsourced
-
redeliverInterval
scala.concurrent.duration.FiniteDuration redeliverInterval()Interval between redelivery attempts.The default value can be configured with the
pekko.persistence.at-least-once-delivery.redeliver-interval
configuration key. This method can be overridden by implementation classes to return non-default values. -
redeliverOverdue
void redeliverOverdue() -
redeliverTask_$eq
-
redeliveryBurstLimit
int redeliveryBurstLimit()Maximum number of unconfirmed messages that will be sent at each redelivery burst (burst frequency is half of the redelivery interval). If there's a lot of unconfirmed messages (e.g. if the destination is not available for a long time), this helps to prevent an overwhelming amount of messages to be sent at once.The default value can be configured with the
pekko.persistence.at-least-once-delivery.redelivery-burst-limit
configuration key. This method can be overridden by implementation classes to return non-default values. -
send
void send(long deliveryId, org.apache.pekko.persistence.AtLeastOnceDelivery.Internal.Delivery d, long timestamp) -
setDeliverySnapshot
If snapshot fromgetDeliverySnapshot()
was saved it will be received during recovery in aSnapshotOffer
message and should be set with this method. -
startRedeliverTask
void startRedeliverTask() -
super$aroundPostStop
void super$aroundPostStop()INTERNAL API- Specified by:
super$aroundPostStop
in interfaceEventsourced
-
super$aroundPreRestart
INTERNAL API- Specified by:
super$aroundPreRestart
in interfaceEventsourced
-
super$aroundReceive
void super$aroundReceive(scala.PartialFunction<Object, scala.runtime.BoxedUnit> receive, Object message) INTERNAL API- Specified by:
super$aroundReceive
in interfaceEventsourced
-
super$onReplaySuccess
void super$onReplaySuccess() -
unconfirmed_$eq
void unconfirmed_$eq(scala.collection.immutable.SortedMap<Object, org.apache.pekko.persistence.AtLeastOnceDelivery.Internal.Delivery> x$1) -
warnAfterNumberOfUnconfirmedAttempts
int warnAfterNumberOfUnconfirmedAttempts()After this number of delivery attempts anAtLeastOnceDelivery.UnconfirmedWarning
message will be sent toself
. The count is reset after a restart.The default value can be configured with the
pekko.persistence.at-least-once-delivery.warn-after-number-of-unconfirmed-attempts
configuration key. This method can be overridden by implementation classes to return non-default values.
-