Skip to content

Instantly share code, notes, and snippets.

@schleichardt
Created August 6, 2012 10:44
Show Gist options
  • Save schleichardt/3273364 to your computer and use it in GitHub Desktop.
Save schleichardt/3273364 to your computer and use it in GitHub Desktop.
Learning Akka, simple example
package info.schleichardt.learning.akka
import akka.actor._
import akka.routing.RoundRobinRouter
object SimpleApp extends App {
val system = ActorSystem("MySystem")
val listener = system.actorOf(Props[Listener], name = "listener")
val master = system.actorOf(Props(new Master(listener)), name = "master")
master ! Start
}
class Worker extends Actor {
def receive = {
case _ => sender ! Answer
}
}
class Master(listener: ActorRef) extends Actor {
val workerRouter = {
val nrOfInstances = 4
context.actorOf(
Props[Worker].withRouter(RoundRobinRouter(nrOfInstances)), name = "workerRouter")
}
def receive = {
case Start =>
workerRouter ! Start
case Answer =>
listener ! Finished
context.stop(self)
context.system.shutdown()
println("master bye bye")
}
}
class Listener extends Actor {
def receive = {
case _ =>
println("listener")
}
}
object Start
object Answer
object Finished
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment