Last active
January 18, 2017 00:34
-
-
Save dos65/2ba9fcd4c26d5dbed13d1f49a93dfd58 to your computer and use it in GitHub Desktop.
persistent become
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
case class Message() | |
class PActor extends PersistentActor with ActorLogging { | |
override def persistenceId: String = "test" | |
override def receiveRecover: Receive = recovery(0) | |
def recovery(count: Int): Receive = { | |
case RecoveryCompleted => | |
log.info(s"Currently have: ${count}") | |
log.info("Recovery completed!") | |
case m: Message => | |
log.info(s"Count: {}", count) | |
context.become(recovery(count + 1)) | |
} | |
override def receiveCommand: Receive = { | |
case m: Message => | |
persist(m)(_ => log.info("persisted")) | |
} | |
} | |
object Main extends App { | |
val system = ActorSystem("test", ConfigFactory.defaultApplication()) | |
val ref = system.actorOf(Props(classOf[PActor])) | |
(1 to 3).foreach(_ => ref ! Message()) | |
} | |
/* first run | |
[INFO] [01/18/2017 03:27:10.850] [test-akka.actor.default-dispatcher-4] [akka://test/user/$a] Currently have: 0 | |
[INFO] [01/18/2017 03:27:10.851] [test-akka.actor.default-dispatcher-4] [akka://test/user/$a] Recovery completed! | |
[INFO] [01/18/2017 03:27:10.939] [test-akka.actor.default-dispatcher-3] [akka://test/user/$a] persisted | |
[INFO] [01/18/2017 03:27:10.955] [test-akka.actor.default-dispatcher-4] [akka://test/user/$a] persisted | |
[INFO] [01/18/2017 03:27:10.966] [test-akka.actor.default-dispatcher-2] [akka://test/user/$a] persisted | |
*/ | |
/* second run | |
[INFO] [01/18/2017 03:28:16.821] [akka://test/user/$a] Count: 0 | |
[INFO] [01/18/2017 03:28:16.822] [akka://test/user/$a] Count: 0 <----- should print "Count: 1" | |
[INFO] [01/18/2017 03:28:16.822] [akka://test/user/$a] Count: 0 | |
[INFO] [01/18/2017 03:28:16.824] [akka://test/user/$a] Currently have: 0 | |
[INFO] [01/18/2017 03:28:16.824] [akka://test/user/$a] Recovery completed! | |
[INFO] [01/18/2017 03:28:16.825] [akka://test/user/$a] Count: 1 <----- should use receiveCommand, but it stayed in receiveRecover | |
[INFO] [01/18/2017 03:28:16.826] [akka://test/user/$a] Count: 2 | |
[INFO] [01/18/2017 03:28:16.826] [akka://test/user/$a] Count: 3 | |
*/ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment