Skip to content

Instantly share code, notes, and snippets.

@lu911
Created August 17, 2013 00:26
Show Gist options
  • Save lu911/6254611 to your computer and use it in GitHub Desktop.
Save lu911/6254611 to your computer and use it in GitHub Desktop.
Akka Actor Test
import akka.actor.{Props, ActorSystem, Actor}
/*
* Copyright © 2013 Yuk SeungChan, All rights reserved.
*/
object Main {
def main(args: Array[String]): Unit = {
println("*" * 20 + " Actor Registry " + "*" * 20)
new LogGenerator().run(100)
println("*" * 20 + " END " + "*" * 20)
}
}
object LogActor {
case class INFO(var msg:String){ msg = "[INFO] " + msg }
case class DEBUG(var msg:String){ msg = "[DEBUG] " + msg }
case class ERROR(var msg:String){ msg = "[ERROR] " + msg }
}
class LogActor extends Actor {
override def preStart() { println("*" * 20 + " preStart " + "*" * 20) }
override def preRestart(reason: Throwable, message: Option[Any]) {
context.children foreach (context.stop(_))
postStop()
}
override def postRestart(reason: Throwable) { preStart() }
override def postStop() {}
def receive = {
case LogActor.INFO(msg) => {
println(msg)
}
case LogActor.DEBUG(msg) => {
println(msg)
}
case LogActor.ERROR(msg) => {
println(msg)
}
}
}
class LogGenerator {
val system = ActorSystem("Logger")
val logActor = system.actorOf(Props[LogActor], name="LogActor")
def run(count: Int): Unit = {
for(i <- 1 to count)
{
logActor ! LogActor.INFO("Test Log : " + i)
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment