Class DurableStateBehavior<Command,State>

java.lang.Object
org.apache.pekko.actor.typed.Behavior<T>
org.apache.pekko.actor.typed.internal.BehaviorImpl.DeferredBehavior<Command>
org.apache.pekko.persistence.typed.state.javadsl.DurableStateBehavior<Command,State>
Direct Known Subclasses:
DurableStateBehaviorWithEnforcedReplies

public abstract class DurableStateBehavior<Command,State> extends BehaviorImpl.DeferredBehavior<Command>
A Behavior for a persistent actor with durable storage of its state.

API May Change

  • Constructor Details

    • DurableStateBehavior

      public DurableStateBehavior(PersistenceId persistenceId)
      Parameters:
      persistenceId - stable unique identifier for the DurableStateBehavior
    • DurableStateBehavior

      public DurableStateBehavior(PersistenceId persistenceId, BackoffSupervisorStrategy onPersistFailure)
      If using onPersistFailure the supervision is only around the DurableStateBehavior not any outer setup/withTimers block. If using restart any actions e.g. scheduling timers, can be done on the PreRestart signal or on the RecoveryCompleted signal.

      Parameters:
      persistenceId - stable unique identifier for the DurableStateBehavior
      onPersistFailure - BackoffSupervisionStrategy for persist failures
  • Method Details

    • Effect

      protected final EffectFactories<State> Effect()
      Factory of effects.

      Return effects from your handlers in order to instruct persistence on how to act on the incoming message (i.e. persist state).

    • apply

      public Behavior<Command> apply(TypedActorContext<Command> context)
      INTERNAL API: DeferredBehavior init, not for user extension
      Specified by:
      apply in class BehaviorImpl.DeferredBehavior<Command>
    • commandHandler

      protected abstract CommandHandler<Command,State> commandHandler()
      Implement by handling incoming commands and return an Effect() to persist or signal other effects of the command handling such as stopping the behavior or others.

      Use newCommandHandlerBuilder() to define the command handlers.

      The command handlers are only invoked when the actor is running (i.e. not recovering). While the actor is persisting state, the incoming messages are stashed and only delivered to the handler once persisting them has completed.

    • durableStateStorePluginId

      public String durableStateStorePluginId()
      Override and define the DurableStateStore plugin id that this actor should use instead of the default.
    • emptyState

      protected abstract State emptyState()
      Implement by returning the initial empty state object. This object will be passed into this behaviors handlers, until a new state replaces it.

      Also known as "zero state" or "neutral state".

    • lastSequenceNumber

      public final long lastSequenceNumber(ActorContext<?> ctx)
      The last sequence number that was persisted, can only be called from inside the handlers of a DurableStateBehavior
    • newCommandHandlerBuilder

      protected CommandHandlerBuilder<Command,State> newCommandHandlerBuilder()
      Returns:
      A new, mutable, command handler builder
    • newSignalHandlerBuilder

      protected final SignalHandlerBuilder<State> newSignalHandlerBuilder()
      Returns:
      A new, mutable signal handler builder
    • persistenceId

      public PersistenceId persistenceId()
    • signalHandler

      protected SignalHandler<State> signalHandler()
      Override to react on general lifecycle signals and DurableStateBehavior specific signals (recovery related). Those are all subtypes of pekko.persistence.typed.state.DurableStateSignal.

      Use newSignalHandlerBuilder() to define the signal handler.

    • snapshotAdapter

      public SnapshotAdapter<State> snapshotAdapter()
      Transform the state into another type before giving it to and from the store. Can be used to migrate from different state types e.g. when migration from PersistentFSM to Typed DurableStateBehavior.
    • tag

      public String tag()
      The tag that can be used in persistence query.