|
Akka/Scala example source code file (PersistentActorExample.scala)
The PersistentActorExample.scala Akka example source codepackage sample.persistence //#persistent-actor-example import akka.actor._ import akka.persistence._ case class Cmd(data: String) case class Evt(data: String) case class ExampleState(events: List[String] = Nil) { def updated(evt: Evt): ExampleState = copy(evt.data :: events) def size: Int = events.length override def toString: String = events.reverse.toString } class ExamplePersistentActor extends PersistentActor { override def persistenceId = "sample-id-1" var state = ExampleState() def updateState(event: Evt): Unit = state = state.updated(event) def numEvents = state.size val receiveRecover: Receive = { case evt: Evt => updateState(evt) case SnapshotOffer(_, snapshot: ExampleState) => state = snapshot } val receiveCommand: Receive = { case Cmd(data) => persist(Evt(s"${data}-${numEvents}"))(updateState) persist(Evt(s"${data}-${numEvents + 1}")) { event => updateState(event) context.system.eventStream.publish(event) } case "snap" => saveSnapshot(state) case "print" => println(state) } } //#persistent-actor-example object PersistentActorExample extends App { val system = ActorSystem("example") val persistentActor = system.actorOf(Props[ExamplePersistentActor], "persistentActor-4-scala") persistentActor ! Cmd("foo") persistentActor ! Cmd("baz") persistentActor ! Cmd("bar") persistentActor ! "snap" persistentActor ! Cmd("buzz") persistentActor ! "print" Thread.sleep(1000) system.shutdown() } Other Akka source code examplesHere is a short list of links related to this Akka PersistentActorExample.scala source code file: |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.