0

I'm trying to use RoundRobinPool to create routees in router. But I'm not able to apply watch on routees because I don't know the paths of routees as in Pool Routing these are making automatically. Help me, how I can watch termination of routee in router actor.

Here is code of Router Class,

  class Router extends Actor {
    var router = context.actorOf(RoundRobinPool(3).props(Props[Worker]), "router")

    def receive = {
      case Work(message) =>
        log.info("I'm Router, Sending Message({}), to Worker!", message)
        router.tell(Work(message),sender)

      case Terminated(actor) =>
        log.info("Oh, Worker({}) is Stopped! Creating New Worker!", actor)
    }
  }`
```

Here is code of Worker Class, 

```
  `class Worker extends Actor {
    def receive = {
      case Work(message) =>
        log.info("I've Received Message({}), From {}!", message, sender.path)
        if (message == PoisonPill) {
          log.info("Sending PoisonPill To Self! {}",self)
          self ! PoisonPill
        } else
          sender ! "Done"
    }
  }`
```
Implementation,

```
  `object ClassicRoutingUsingPoolDemo extends App {
    val system = ActorSystem("system")
    val poolRouter = system.actorOf(Props[Router], "poolRouter")

    poolRouter.tell(Work(PoisonPill),poolRouter)
  }`
```



Zaryab Ali
  • 19
  • 3

0 Answers0