0

嗨,我想实现一个路由器策略,在某些事件上会向路由器发送一条消息,但我不知道如何在策略实现中获取对路由器的引用。

这就是我想要做的:

 val router = system.actorOf(RoundRobinPool(5, supervisorStrategy = OneForOneStrategy(){
      case _: ActorKilledException => Escalate
      case _: ActorInitializationException => Escalate
      case _ => self ! SomeMsg(); Restart
    }).props(Props(classOf[MyClass]))) 

其中 self 应该是路由器ActorRef,但在这种情况下无法识别 self 。

4

1 回答 1

0

我通常从不在路由器中创建机箱,而是在路由器外部创建机箱

  val workerRouter: ActorRef = context.actorOf(
    Props[Worker].withRouter(RoundRobinPool(nrOfWorkers)), name = "workerRouter")

  val msgRouter: ActorRef = context.actorOf(
    Props[Worker].withRouter(RoundRobinPool(nrOfWorkers)), name = "msgRouter")

然后在我的演员接收功能

def receive: PartialFunction[Any, Unit] = {
    case RunWorkersMsg =>
      workerRouter ! WorkMsg(i , numberOfElements)
    case ResultMsg(value) =>
      msgRouter ! WorkMsg()
  }

在这里,您可以通过示例https://github.com/politrons/Akka看到我的 Akka 项目

于 2017-01-05T09:56:51.490 回答