benjaminBoboul/workbench-getting-started-with-scala

View on GitHub
src/main/scala/akkaActor/router/manualRouter.scala

Summary

Maintainability
A
0 mins
Test Coverage
package akkaActor.router

import akka.actor.{Actor, ActorLogging, Props}
import akka.routing.{ActorRefRoutee, RoundRobinRoutingLogic, Router}

object manualRouter extends App {

  class Master extends Actor {

    private val slaves: IndexedSeq[ActorRefRoutee] = for (index <- 1 to 5) yield {
      val slave = context.actorOf(Props[Slave](), s"slave$index")
      context.watch(slave)
      ActorRefRoutee(slave)
    }

    private val router = Router(RoundRobinRoutingLogic(), slaves)

    override def receive: Receive = {
      case message => router.route(message, sender())
    }
  }

  class Slave extends Actor with ActorLogging {
    override def receive: Receive = {
      case message => log.info(s"Receive $message")
    }
  }


}