=per #15429 Rewrite persistence documentation and samples for 2.3.4 changes
(cherry picked from commit 02351e32f110a8c4a249f0f3f84bae5898d1a836) Conflicts: akka-samples/akka-sample-persistence-java-lambda/tutorial/index.html akka-samples/akka-sample-persistence-java/tutorial/index.html akka-samples/akka-sample-persistence-scala/build.sbt akka-samples/akka-sample-persistence-scala/src/main/scala/sample/persistence/ConversationRecoveryExample.scala akka-samples/akka-sample-persistence-scala/src/main/scala/sample/persistence/PersistentActorExample.scala akka-samples/akka-sample-persistence-scala/src/main/scala/sample/persistence/ProcessorChannelExample.scala akka-samples/akka-sample-persistence-scala/src/main/scala/sample/persistence/ProcessorChannelRemoteExample.scala akka-samples/akka-sample-persistence-scala/src/main/scala/sample/persistence/SnapshotExample.scala akka-samples/akka-sample-persistence-scala/src/main/scala/sample/persistence/StreamExample.scala akka-samples/akka-sample-persistence-scala/tutorial/index.html
This commit is contained in:
parent
062d304b73
commit
d6ffdf521c
35 changed files with 1091 additions and 2276 deletions
|
|
@ -5,34 +5,40 @@ import akka.persistence._
|
|||
|
||||
object SnapshotExample extends App {
|
||||
final case class ExampleState(received: List[String] = Nil) {
|
||||
def update(s: String) = copy(s :: received)
|
||||
def updated(s: String): ExampleState = copy(s :: received)
|
||||
override def toString = received.reverse.toString
|
||||
}
|
||||
|
||||
class ExampleProcessor extends Processor {
|
||||
class ExamplePersistentActor extends PersistentActor {
|
||||
var state = ExampleState()
|
||||
|
||||
def receive = {
|
||||
case Persistent(s, snr) => state = state.update(s"${s}-${snr}")
|
||||
def receiveCommand: Actor.Receive = {
|
||||
case "print" => println("current state = " + state)
|
||||
case "snap" => saveSnapshot(state)
|
||||
case SaveSnapshotSuccess(metadata) => // ...
|
||||
case SaveSnapshotFailure(metadata, reason) => // ...
|
||||
case s: String =>
|
||||
persist(s) { evt => state = state.updated(evt) }
|
||||
}
|
||||
|
||||
def receiveRecover: Actor.Receive = {
|
||||
case SnapshotOffer(_, s: ExampleState) =>
|
||||
println("offered state = " + s)
|
||||
state = s
|
||||
case "print" => println("current state = " + state)
|
||||
case "snap" => saveSnapshot(state)
|
||||
case evt: String =>
|
||||
state = state.updated(evt)
|
||||
}
|
||||
}
|
||||
|
||||
val system = ActorSystem("example")
|
||||
val processor = system.actorOf(Props(classOf[ExampleProcessor]), "processor-3-scala")
|
||||
val persistentActor = system.actorOf(Props(classOf[ExamplePersistentActor]), "persistentActor-3-scala")
|
||||
|
||||
processor ! Persistent("a")
|
||||
processor ! Persistent("b")
|
||||
processor ! "snap"
|
||||
processor ! Persistent("c")
|
||||
processor ! Persistent("d")
|
||||
processor ! "print"
|
||||
persistentActor ! "a"
|
||||
persistentActor ! "b"
|
||||
persistentActor ! "snap"
|
||||
persistentActor ! "c"
|
||||
persistentActor ! "d"
|
||||
persistentActor ! "print"
|
||||
|
||||
Thread.sleep(1000)
|
||||
system.shutdown()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue