2017-01-05 6 views
0

こんにちは私はルータ戦略を実装したいと思っていますが、いくつかのイベントでルータにメッセージを送信しますが、ルータへの参照を取得する方法がわかりません戦略の実装内部Akka - router supervisorStrategy-イベント時にルータにメッセージを送信する方法

は、これは私がやろうとしているものです:自己ルータActorRefにする必要がありますが、自己は、このコンテキストでは認識されない

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

答えて

0
私は通常のルータにケースを作成することはありません

なく外部あなたが例https://github.com/politrons/Akka

+0

私と私のアッカプロジェクトを見ることができます。ここ

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

私の俳優の受信機能で次に

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

私のプロジェクトには同じコードのxアクターがあるので、ルータを持っていたいと思っています。ルートの1つが終了したとき(ブロードキャストではないので、既存のルートの1つだけがそれを受信する)、ルータにメッセージを送信する必要があります。あなたの例では、俳優が死亡した場合、彼はx-1の既存の生きている俳優の1人に失敗したことを通知することはできません –

関連する問題