Search Results for

    Show / Hide Table of Contents

    Class AtLeastOnceDeliveryReceiveActor

    Receive persistent actor type, that sends messages with at-least-once delivery semantics to it's destinations.

    Inheritance
    object
    ActorBase
    Eventsourced
    UntypedPersistentActor
    ReceivePersistentActor
    AtLeastOnceDeliveryReceiveActor
    Implements
    IInternalActor
    IPersistentIdentity
    IPersistenceStash
    IWithUnboundedStash
    IWithUnrestrictedStash
    IActorStash
    IRequiresMessageQueue<IUnboundedDequeBasedMessageQueueSemantics>
    IPersistenceRecovery
    IInitializableActor
    Inherited Members
    ReceivePersistentActor.Become(Action)
    ReceivePersistentActor.BecomeStacked(Action)
    ReceivePersistentActor.OnCommand(object)
    ReceivePersistentActor.OnRecover(object)
    ReceivePersistentActor.Recover<T>(Action<T>, Predicate<T>)
    ReceivePersistentActor.Recover<T>(Predicate<T>, Action<T>)
    ReceivePersistentActor.Recover(Type, Action<object>, Predicate<object>)
    ReceivePersistentActor.Recover(Type, Predicate<object>, Action<object>)
    ReceivePersistentActor.Recover<T>(Func<T, bool>)
    ReceivePersistentActor.Recover(Type, Func<object, bool>)
    ReceivePersistentActor.RecoverAny(Action<object>)
    ReceivePersistentActor.CommandAsync<T>(Func<T, Task>, Predicate<T>)
    ReceivePersistentActor.CommandAsync<T>(Predicate<T>, Func<T, Task>)
    ReceivePersistentActor.CommandAsync(Type, Func<object, Task>, Predicate<object>)
    ReceivePersistentActor.CommandAsync(Type, Predicate<object>, Func<object, Task>)
    ReceivePersistentActor.CommandAnyAsync(Func<object, Task>)
    ReceivePersistentActor.Command<T>(Action<T>, Predicate<T>)
    ReceivePersistentActor.Command<T>(Predicate<T>, Action<T>)
    ReceivePersistentActor.Command(Type, Action<object>, Predicate<object>)
    ReceivePersistentActor.Command(Type, Predicate<object>, Action<object>)
    ReceivePersistentActor.Command<T>(Func<T, bool>)
    ReceivePersistentActor.Command(Type, Func<object, bool>)
    ReceivePersistentActor.Command(Action<object>)
    ReceivePersistentActor.CommandAny(Action<object>)
    UntypedPersistentActor.Receive(object)
    UntypedPersistentActor.ReceiveCommand(object)
    UntypedPersistentActor.ReceiveRecover(object)
    UntypedPersistentActor.Become(UntypedReceive)
    UntypedPersistentActor.BecomeStacked(UntypedReceive)
    UntypedPersistentActor.Context
    Eventsourced.Extension
    Eventsourced.Log
    Eventsourced.PersistenceId
    Eventsourced.Recovery
    Eventsourced.InternalStashOverflowStrategy
    Eventsourced.Stash
    Eventsourced.JournalPluginId
    Eventsourced.SnapshotPluginId
    Eventsourced.Journal
    Eventsourced.SnapshotStore
    Eventsourced.SnapshotterId
    Eventsourced.IsRecovering
    Eventsourced.IsRecoveryFinished
    Eventsourced.LastSequenceNr
    Eventsourced.SnapshotSequenceNr
    Eventsourced.LoadSnapshot(string, SnapshotSelectionCriteria, long)
    Eventsourced.SaveSnapshot(object)
    Eventsourced.DeleteSnapshot(long)
    Eventsourced.DeleteSnapshots(SnapshotSelectionCriteria)
    Eventsourced.Persist<TEvent>(TEvent, Action<TEvent>)
    Eventsourced.PersistAll<TEvent>(IEnumerable<TEvent>, Action<TEvent>)
    Eventsourced.PersistAsync<TEvent>(TEvent, Action<TEvent>)
    Eventsourced.PersistAllAsync<TEvent>(IEnumerable<TEvent>, Action<TEvent>)
    Eventsourced.DeferAsync<TEvent>(TEvent, Action<TEvent>)
    Eventsourced.DeleteMessages(long)
    Eventsourced.OnRecoveryFailure(Exception, object)
    Eventsourced.OnPersistFailure(Exception, object, long)
    Eventsourced.OnPersistRejected(Exception, object, long)
    Eventsourced.RunTask(Func<Task>)
    Eventsourced.UnstashFilterPredicate
    Eventsourced.AroundPreStart()
    Eventsourced.AroundPostRestart(Exception, object)
    Eventsourced.Unhandled(object)
    ActorBase.Sender
    ActorBase.Self
    ActorBase.EmptyReceive
    ActorBase.Become(Receive)
    ActorBase.BecomeStacked(Receive)
    ActorBase.UnbecomeStacked()
    ActorBase.SetReceiveTimeout(TimeSpan?)
    ActorBase.PreStart()
    ActorBase.PreRestart(Exception, object)
    ActorBase.PostRestart(Exception)
    ActorBase.PostStop()
    ActorBase.SupervisorStrategy()
    object.Equals(object)
    object.Equals(object, object)
    object.GetHashCode()
    object.GetType()
    object.MemberwiseClone()
    object.ReferenceEquals(object, object)
    object.ToString()
    Namespace: Akka.Persistence
    Assembly: Akka.Persistence.dll
    Syntax
    public abstract class AtLeastOnceDeliveryReceiveActor : ReceivePersistentActor, IInternalActor, IPersistentIdentity, IPersistenceStash, IWithUnboundedStash, IWithUnrestrictedStash, IActorStash, IRequiresMessageQueue<IUnboundedDequeBasedMessageQueueSemantics>, IPersistenceRecovery, IInitializableActor

    Constructors

    | Edit this page View Source

    AtLeastOnceDeliveryReceiveActor()

    Initializes a new instance of the AtLeastOnceDeliveryReceiveActor class.

    Declaration
    protected AtLeastOnceDeliveryReceiveActor()
    | Edit this page View Source

    AtLeastOnceDeliveryReceiveActor(AtLeastOnceDeliverySettings)

    Initializes a new instance of the AtLeastOnceDeliveryReceiveActor class.

    Declaration
    protected AtLeastOnceDeliveryReceiveActor(PersistenceSettings.AtLeastOnceDeliverySettings settings)
    Parameters
    Type Name Description
    PersistenceSettings.AtLeastOnceDeliverySettings settings

    Custom AtLeastOnceDelivery settings

    | Edit this page View Source

    AtLeastOnceDeliveryReceiveActor(Func<AtLeastOnceDeliverySettings, AtLeastOnceDeliverySettings>)

    Initializes a new instance of the AtLeastOnceDeliveryReceiveActor class.

    Declaration
    protected AtLeastOnceDeliveryReceiveActor(Func<PersistenceSettings.AtLeastOnceDeliverySettings, PersistenceSettings.AtLeastOnceDeliverySettings> overrideSettings)
    Parameters
    Type Name Description
    Func<PersistenceSettings.AtLeastOnceDeliverySettings, PersistenceSettings.AtLeastOnceDeliverySettings> overrideSettings

    A lambda to tweak the default AtLeastOnceDelivery settings.

    Properties

    | Edit this page View Source

    MaxUnconfirmedMessages

    Maximum number of unconfirmed messages, that this actor is allowed to hold in the memory. if this number is exceeded, Deliver(ActorPath, Func<long, object>, bool) will not accept more messages and it will throw MaxUnconfirmedMessagesExceededException.

    The default value can be configure with the 'akka.persistence.at-least-once-delivery.max-unconfirmed-messages' configuration key. Custom value may be provided via the AtLeastOnceDeliveryReceiveActor(AtLeastOnceDeliverySettings) constructor.

    Declaration
    public int MaxUnconfirmedMessages { get; }
    Property Value
    Type Description
    int
    | Edit this page View Source

    RedeliverInterval

    Interval between redelivery attempts.

    The default value can be configure with the 'akka.persistence.at-least-once-delivery.redeliver-interval' configuration key. Custom value may be provided via the AtLeastOnceDeliveryReceiveActor(AtLeastOnceDeliverySettings) constructor.

    Declaration
    public TimeSpan RedeliverInterval { get; }
    Property Value
    Type Description
    TimeSpan
    | Edit this page View Source

    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 prevent an overwhelming amount of messages to be sent at once.

    The default value can be configure with the 'akka.persistence.at-least-once-delivery.redelivery-burst-limit' configuration key. Custom value may be provided via the AtLeastOnceDeliveryReceiveActor(AtLeastOnceDeliverySettings) constructor.

    Declaration
    public int RedeliveryBurstLimit { get; }
    Property Value
    Type Description
    int
    | Edit this page View Source

    UnconfirmedCount

    Number of messages that have not been confirmed yet.

    Declaration
    public int UnconfirmedCount { get; }
    Property Value
    Type Description
    int
    | Edit this page View Source

    WarnAfterNumberOfUnconfirmedAttempts

    After this number of delivery attempts a UnconfirmedWarning message will be sent to Self. The count is reset after restart.

    The default value can be configure with the 'akka.persistence.at-least-once-delivery.warn-after-number-of-unconfirmed-attempts' configuration key. Custom value may be provided via the AtLeastOnceDeliveryReceiveActor(AtLeastOnceDeliverySettings) constructor.

    Declaration
    public int WarnAfterNumberOfUnconfirmedAttempts { get; }
    Property Value
    Type Description
    int

    Methods

    | Edit this page View Source

    AroundPostStop()

    TBD

    Declaration
    public override void AroundPostStop()
    Overrides
    Eventsourced.AroundPostStop()
    | Edit this page View Source

    AroundPreRestart(Exception, object)

    TBD

    Declaration
    public override void AroundPreRestart(Exception cause, object message)
    Parameters
    Type Name Description
    Exception cause

    TBD

    object message

    TBD

    Overrides
    Eventsourced.AroundPreRestart(Exception, object)
    | Edit this page View Source

    AroundReceive(Receive, object)

    TBD

    Declaration
    protected override bool AroundReceive(Receive receive, object message)
    Parameters
    Type Name Description
    Receive receive

    TBD

    object message

    TBD

    Returns
    Type Description
    bool

    TBD

    Overrides
    Eventsourced.AroundReceive(Receive, object)
    | Edit this page View Source

    ConfirmDelivery(long)

    Call this method when a message has been confirmed by the destination, or to abort re-sending.

    Declaration
    public bool ConfirmDelivery(long deliveryId)
    Parameters
    Type Name Description
    long deliveryId

    TBD

    Returns
    Type Description
    bool

    True the first time the deliveryId is confirmed, false for duplicate confirmations.

    | Edit this page View Source

    Deliver(ActorPath, Func<long, object>)

    Send the message created with deliveryMessageMapper function to the destination actor. It will retry sending the message until the delivery is confirmed with ConfirmDelivery(long). Correlation between these two methods is performed by deliveryId that is provided as parameter to the deliveryMessageMapper function. The deliveryId is typically passed in the message to the destination, which replies with a message containing the same 'deliveryId'.

    The 'deliveryId' is a strictly monotonically increasing sequence number without gaps. The same sequence is used for all destinations of the actor, i.e. when sending to multiple destinations the destinations will see gaps in the sequence if no translation is performed.

    During recovery this method will not send out the message, but it will be sent later if no matching ConfirmDelivery(long) was performed.

    Declaration
    public void Deliver(ActorPath destination, Func<long, object> deliveryMessageMapper)
    Parameters
    Type Name Description
    ActorPath destination

    TBD

    Func<long, object> deliveryMessageMapper

    TBD

    Exceptions
    Type Condition
    MaxUnconfirmedMessagesExceededException

    Thrown when UnconfirmedCount is greater than or equal to MaxUnconfirmedMessages.

    | Edit this page View Source

    Deliver(ActorSelection, Func<long, object>)

    Send the message created with deliveryMessageMapper function to the destination actor. It will retry sending the message until the delivery is confirmed with ConfirmDelivery(long). Correlation between these two methods is performed by deliveryId that is provided as parameter to the deliveryMessageMapper function. The deliveryId is typically passed in the message to the destination, which replies with a message containing the same 'deliveryId'.

    The 'deliveryId' is a strictly monotonically increasing sequence number without gaps. The same sequence is used for all destinations of the actor, i.e. when sending to multiple destinations the destinations will see gaps in the sequence if no translation is performed.

    During recovery this method will not send out the message, but it will be sent later if no matching ConfirmDelivery(long) was performed.

    Declaration
    public void Deliver(ActorSelection destination, Func<long, object> deliveryMessageMapper)
    Parameters
    Type Name Description
    ActorSelection destination

    TBD

    Func<long, object> deliveryMessageMapper

    TBD

    Exceptions
    Type Condition
    MaxUnconfirmedMessagesExceededException

    Thrown when UnconfirmedCount is greater than or equal to MaxUnconfirmedMessages.

    | Edit this page View Source

    GetDeliverySnapshot()

    Full state of the AtLeastOnceDeliverySemantic. It can be saved with SaveSnapshot(object). During recovery the snapshot received in SnapshotOffer should be set with 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.

    Declaration
    public AtLeastOnceDeliverySnapshot GetDeliverySnapshot()
    Returns
    Type Description
    AtLeastOnceDeliverySnapshot

    TBD

    | Edit this page View Source

    OnReplaySuccess()

    TBD

    Declaration
    protected override void OnReplaySuccess()
    Overrides
    Eventsourced.OnReplaySuccess()
    | Edit this page View Source

    SetDeliverySnapshot(AtLeastOnceDeliverySnapshot)

    If snapshot from GetDeliverySnapshot() was saved it will be received during recovery phase in a SnapshotOffer message and should be set with this method.

    Declaration
    public void SetDeliverySnapshot(AtLeastOnceDeliverySnapshot snapshot)
    Parameters
    Type Name Description
    AtLeastOnceDeliverySnapshot snapshot

    TBD

    Implements

    IInternalActor
    IPersistentIdentity
    IPersistenceStash
    IWithUnboundedStash
    IWithUnrestrictedStash
    IActorStash
    IRequiresMessageQueue<T>
    IPersistenceRecovery
    IInitializableActor

    Extension Methods

    ObjectExtensions.IsDefaultForType<T>(T)
    ObjectExtensions.AsOption<T>(T)
    Extensions.AsInstanceOf<T>(object)
    In this article
    • githubEdit this page
    • View Source
    Back to top
    Contribute
    • Project Chat
    • Discussion Forum
    • Source Code
    Support
    • Akka.NET Support Plans
    • Akka.NET Observability Tools
    • Akka.NET Training & Consulting
    Maintained By
    • Petabridge - The Akka.NET Company
    • Learn Akka.NET