Update Persistence Snapshot documentation (#22419)

* Update Persistence Snapshot documentation (#22233)

* Use copy of ExampleState as it is mutable
This commit is contained in:
Richard Imaoka 2017-03-14 21:30:32 +09:00 committed by Patrik Nordwall
parent e77c3c3e8a
commit ea9617aa25
4 changed files with 31 additions and 16 deletions

View file

@ -159,13 +159,21 @@ object PersistenceDocSpec {
class MyPersistentActor extends PersistentActor {
override def persistenceId = "my-stable-persistence-id"
def updateState(event: String): Unit = {}
//#save-snapshot
var state: Any = _
val snapShotInterval = 1000
override def receiveCommand: Receive = {
case "snap" => saveSnapshot(state)
case SaveSnapshotSuccess(metadata) => // ...
case SaveSnapshotFailure(metadata, reason) => // ...
case cmd: String =>
persist(s"evt-$cmd") { e =>
updateState(e)
if (lastSequenceNr % snapShotInterval == 0 && lastSequenceNr != 0)
saveSnapshot(state)
}
}
//#save-snapshot

View file

@ -29,14 +29,15 @@ class ExamplePersistentActor extends PersistentActor {
case SnapshotOffer(_, snapshot: ExampleState) => state = snapshot
}
val snapShotInterval = 1000
val receiveCommand: Receive = {
case Cmd(data) =>
persist(Evt(s"${data}-${numEvents}"))(updateState)
persist(Evt(s"${data}-${numEvents + 1}")) { event =>
persist(Evt(s"${data}-${numEvents}")) { event =>
updateState(event)
context.system.eventStream.publish(event)
if (lastSequenceNr % snapShotInterval == 0 && lastSequenceNr != 0)
saveSnapshot(state)
}
case "snap" => saveSnapshot(state)
case "print" => println(state)
}
@ -51,7 +52,6 @@ object PersistentActorExample extends App {
persistentActor ! Cmd("foo")
persistentActor ! Cmd("baz")
persistentActor ! Cmd("bar")
persistentActor ! "snap"
persistentActor ! Cmd("buzz")
persistentActor ! "print"