trait PersistentView extends Actor with Snapshotter with Stash with StashFactory with PersistenceIdentity with PersistenceRecovery with ActorLogging
A view replicates the persistent message stream of a PersistentActor. Implementation classes receive the message stream directly from the Journal. These messages can be processed to update internal state in order to maintain an (eventual consistent) view of the state of the corresponding persistent actor. A persistent view can also run on a different node, provided that a replicated journal is used.
Implementation classes refer to a persistent actors' message stream by implementing persistenceId
with the corresponding (shared) identifier value.
Views can also store snapshots of internal state by calling PersistentView#autoUpdate. The snapshots of a view are independent of those of the referenced persistent actor. During recovery, a saved snapshot is offered to the view with a SnapshotOffer message, followed by replayed messages, if any, that are younger than the snapshot. Default is to offer the latest saved snapshot.
By default, a view automatically updates itself with an interval returned by autoUpdateInterval
.
This method can be overridden by implementation classes to define a view instance-specific update
interval. The default update interval for all views of an actor system can be configured with the
akka.persistence.view.auto-update-interval
configuration key. Applications may trigger additional
view updates by sending the view Update requests. See also methods
- PersistentView#autoUpdate for turning automated updates on or off
- PersistentView#autoUpdateReplayMax for limiting the number of replayed messages per view update cycle
- Annotations
- @deprecated
- Deprecated
(Since version 2.4) use Persistence Query instead
- Source
- PersistentView.scala
- Alphabetic
- By Inheritance
- PersistentView
- ActorLogging
- PersistenceRecovery
- PersistenceIdentity
- StashFactory
- Stash
- RequiresMessageQueue
- UnrestrictedStash
- StashSupport
- Snapshotter
- Actor
- AnyRef
- Any
- by any2stringadd
- by StringFormat
- by Ensuring
- by ArrowAssoc
- Hide All
- Show All
- Public
- All
Type Members
-
type
Receive = PartialFunction[Any, Unit]
- Definition Classes
- Actor
Abstract Value Members
-
abstract
def
persistenceId: String
Id of the persistent entity for which messages should be replayed.
Id of the persistent entity for which messages should be replayed.
- Definition Classes
- PersistenceIdentity
-
abstract
def
receive: actor.Actor.Receive
This defines the initial actor behavior, it must return a partial function with the actor logic.
This defines the initial actor behavior, it must return a partial function with the actor logic.
- Definition Classes
- Actor
-
abstract
def
viewId: String
View id is used as identifier for snapshots performed by this PersistentView.
View id is used as identifier for snapshots performed by this PersistentView. This allows the View to keep separate snapshots of data than the PersistentActor originating the message stream.
The usual case is to have a *different* id set as
viewId
thanpersistenceId
, although it is possible to share the same id with an PersistentActor - for example to decide about snapshots based on some average or sum, calculated by this view.Example:
class SummingView extends PersistentView { override def persistenceId = "count-123" override def viewId = "count-123-sum" // this view is performing summing, // so this view's snapshots reside under the "-sum" suffixed id // ... }
Concrete Value Members
-
def
autoUpdate: Boolean
If
true
, this view automatically updates itself with an interval specified byautoUpdateInterval
.If
true
, this view automatically updates itself with an interval specified byautoUpdateInterval
. Iffalse
, applications must explicitly update this view by sending Update requests. The default value can be configured with theakka.persistence.view.auto-update
configuration key. This method can be overridden by implementation classes to return non-default values. -
def
autoUpdateInterval: FiniteDuration
The interval for automated updates.
The interval for automated updates. The default value can be configured with the
akka.persistence.view.auto-update-interval
configuration key. This method can be overridden by implementation classes to return non-default values. -
def
autoUpdateReplayMax: Long
The maximum number of messages to replay per update.
The maximum number of messages to replay per update. The default value can be configured with the
akka.persistence.view.auto-update-replay-max
configuration key. This method can be overridden by implementation classes to return non-default values. -
implicit
val
context: ActorContext
Stores the context for this actor, including self, and sender.
Stores the context for this actor, including self, and sender. It is implicit to support operations such as
forward
.WARNING: Only valid within the Actor itself, so do not close over it and publish it to other threads!
akka.actor.ActorContext is the Scala API.
getContext
returns a akka.actor.UntypedActorContext, which is the Java API of the actor context.- Definition Classes
- Actor
-
def
deleteSnapshot(sequenceNr: Long): Unit
Deletes the snapshot identified by
sequenceNr
.Deletes the snapshot identified by
sequenceNr
.The PersistentActor will be notified about the status of the deletion via an DeleteSnapshotSuccess or DeleteSnapshotFailure message.
- Definition Classes
- Snapshotter
-
def
deleteSnapshots(criteria: SnapshotSelectionCriteria): Unit
Deletes all snapshots matching
criteria
.Deletes all snapshots matching
criteria
.The PersistentActor will be notified about the status of the deletion via an DeleteSnapshotsSuccess or DeleteSnapshotsFailure message.
- Definition Classes
- Snapshotter
-
def
isPersistent: Boolean
If
true
, the currently processed message was persisted (is sent from the Journal).If
true
, the currently processed message was persisted (is sent from the Journal). Iffalse
, the currently processed message comes from another actor (from "user-land"). -
def
journalPluginId: String
Configuration id of the journal plugin servicing this persistent actor or view.
Configuration id of the journal plugin servicing this persistent actor or view. When empty, looks in
akka.persistence.journal.plugin
to find configuration entry path. When configured, usesjournalPluginId
as absolute path to the journal configuration entry. Configuration entry must contain few required fields, such asclass
. Seesrc/main/resources/reference.conf
.- Definition Classes
- PersistenceIdentity
-
def
lastSequenceNr: Long
Highest received sequence number so far or
0L
if this actor hasn't replayed any persistent events yet. -
def
loadSnapshot(persistenceId: String, criteria: SnapshotSelectionCriteria, toSequenceNr: Long): Unit
Instructs the snapshot store to load the specified snapshot and send it via an SnapshotOffer to the running PersistentActor.
Instructs the snapshot store to load the specified snapshot and send it via an SnapshotOffer to the running PersistentActor.
- Definition Classes
- Snapshotter
-
def
log: LoggingAdapter
- Definition Classes
- ActorLogging
-
def
postRestart(reason: Throwable): Unit
User overridable callback: By default it calls
preStart()
.User overridable callback: By default it calls
preStart()
.- reason
the Throwable that caused the restart to happen Is called right AFTER restart on the newly created Actor to allow reinitialization after an Actor crash.
- Definition Classes
- Actor
- Annotations
- @throws( classOf[Exception] )
-
def
postStop(): Unit
Overridden callback.
Overridden callback. Prepends all messages in the stash to the mailbox and clears the stash. Must be called when overriding this method, otherwise stashed messages won't be propagated to DeadLetters when actor stops.
- Definition Classes
- PersistentView → UnrestrictedStash → Actor
-
def
preRestart(reason: Throwable, message: Option[Any]): Unit
Overridden callback.
Overridden callback. Prepends all messages in the stash to the mailbox, clears the stash, stops all children and invokes the postStop() callback.
- reason
the Throwable that caused the restart to happen
- message
optionally the current message the actor processed when failing, if applicable Is called on a crashed Actor right BEFORE it is restarted to allow clean up of resources before Actor is terminated.
- Definition Classes
- PersistentView → UnrestrictedStash → Actor
-
def
preStart(): Unit
Triggers an initial recovery, starting form a snapshot, if any, and replaying at most
autoUpdateReplayMax
messages (following that snapshot).Triggers an initial recovery, starting form a snapshot, if any, and replaying at most
autoUpdateReplayMax
messages (following that snapshot).- Definition Classes
- PersistentView → Actor
-
def
recovery: Recovery
Called when the persistent actor is started for the first time.
Called when the persistent actor is started for the first time. The returned Recovery object defines how the Actor will recover its persistent state before handling the first incoming message.
To skip recovery completely return
Recovery.none
.- Definition Classes
- PersistentView → PersistenceRecovery
-
def
saveSnapshot(snapshot: Any): Unit
Saves a
snapshot
of this snapshotter's state.Saves a
snapshot
of this snapshotter's state.The PersistentActor will be notified about the success or failure of this via an SaveSnapshotSuccess or SaveSnapshotFailure message.
- Definition Classes
- Snapshotter
-
implicit final
val
self: ActorRef
The 'self' field holds the ActorRef for this actor.
The 'self' field holds the ActorRef for this actor.
Can be used to send messages to itself:
self ! message
- Definition Classes
- Actor
-
final
def
sender(): ActorRef
The reference sender Actor of the last received message.
The reference sender Actor of the last received message. Is defined if the message was sent from another Actor, else
deadLetters
in akka.actor.ActorSystem.WARNING: Only valid within the Actor itself, so do not close over it and publish it to other threads!
- Definition Classes
- Actor
-
def
snapshotPluginId: String
Configuration id of the snapshot plugin servicing this persistent actor or view.
Configuration id of the snapshot plugin servicing this persistent actor or view. When empty, looks in
akka.persistence.snapshot-store.plugin
to find configuration entry path. When configured, usessnapshotPluginId
as absolute path to the snapshot store configuration entry. Configuration entry must contain few required fields, such asclass
. Seesrc/main/resources/reference.conf
.- Definition Classes
- PersistenceIdentity
-
def
snapshotSequenceNr: Long
Returns
lastSequenceNr
.Returns
lastSequenceNr
.- Definition Classes
- PersistentView → Snapshotter
-
def
snapshotterId: String
Returns
viewId
.Returns
viewId
.- Definition Classes
- PersistentView → Snapshotter
-
def
stash(): Unit
Adds the current message (the message that the actor received last) to the actor's stash.
Adds the current message (the message that the actor received last) to the actor's stash.
- Definition Classes
- StashSupport
- Exceptions thrown
IllegalStateException
if the same message is stashed more than onceStashOverflowException
in case of a stash capacity violation
-
def
supervisorStrategy: SupervisorStrategy
User overridable definition the strategy to use for supervising child actors.
User overridable definition the strategy to use for supervising child actors.
- Definition Classes
- Actor
-
def
unhandled(message: Any): Unit
User overridable callback.
User overridable callback.
Is called when a message isn't handled by the current behavior of the actor by default it fails with either a akka.actor.DeathPactException (in case of an unhandled akka.actor.Terminated message) or publishes an akka.actor.UnhandledMessage to the actor's system's akka.event.EventStream
- Definition Classes
- Actor
-
def
unstashAll(): Unit
Prepends all messages in the stash to the mailbox, and then clears the stash.
Prepends all messages in the stash to the mailbox, and then clears the stash.
Messages from the stash are enqueued to the mailbox until the capacity of the mailbox (if any) has been reached. In case a bounded mailbox overflows, a
MessageQueueAppendFailedException
is thrown.The stash is guaranteed to be empty after calling
unstashAll()
.- Definition Classes
- StashSupport