Scala Akka-路由器管理策略-如何在事件发生时向路由器发送消息

Scala Akka-路由器管理策略-如何在事件发生时向路由器发送消息,scala,akka,akka-cluster,akka-actor,Scala,Akka,Akka Cluster,Akka Actor,嗨,我想实现一个路由器策略,在某些事件中将向路由器发送消息,但我不知道如何在策略实现中获取对路由器的引用 这就是我想做的: val router = system.actorOf(RoundRobinPool(5, supervisorStrategy = OneForOneStrategy(){ case _: ActorKilledException => Escalate case _: ActorInitializationException =>

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

这就是我想做的:

 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

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

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

  val msgRouter: ActorRef = context.actorOf(
    Props[Worker].withRouter(RoundRobinPool(nrOfWorkers)), name = "msgRouter")
然后在我的actor-receiver函数中

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

这里你可以看到我的Akka项目的一个例子

我想要一个路由器,因为在我的项目中有x个演员使用相同的代码。现在,当一个路由被终止时,我需要向路由器发送一条消息(不是广播,所以只有一个现有的路由将接收它)。在您的示例中,如果演员死亡,那么他将无法将其故障通知给一个x-1现有的在世演员