2016-11-08 1 views
1

akka.routing.Router俳優を使用してWorkをさまざまな種類の俳優に放送しています。私はakka.routing.BroadcastRoutingLogicを使用してこの動作をします。 Routerには、それぞれのタイプの1つのアクターが含まれています(Type1Actorは、ジョブ1をWorkType2Actorはジョブ2を同じWork ...としています)。ルーターのルートを同じタイプの俳優に置き換えます

俳優が終了し、私が受け取る(どんなに):

def receive = { 
//... 
case Terminated(a) => //HERE DO SOMETHING 
} 

私は常にアクティブ俳優の同じ量を維持するために、私のrouteesを更新するとの積極的な俳優の同じ量を持つようにしたいですタイプ。 Terminatedアクターのタイプは重要です:私は、同じタイプの2人のアクターによって2回の作業が行われることを望んでいませんが、私はアクターによって行われたくない作業を望んでいません。TypeXActor

終了したリファレンス(aここ)から適切なPropsを取得する方法はありますか?私の選択肢は何ですか?その後、

答えて

1

名前あなたの労働者

名前あなたの労働者と俳優

val router: ActorRef = 
    context.actorOf(BroadcastPool(5).props(Props(new Worker(), "worker-type1")), "router") 

インサイダーのタイプを決定するための名前を取得するルータ

case Terminated(actorRef) => 
    actorRef.path.name match { 
    case "type1" => //add type1 worker 
    case "type2" => //add type2 worker 
    case _ => //ignore 
    } 
+0

ありがとう!名前を付ける俳優が行く方法です。しかし、 'actorRef.path.name match {'は 'ActorRef'からアクター名を取得する正しい方法です – iwalktheline

+0

@iwalkthelineはそれをいくつか見逃しました。訂正してくれてありがとう。 – pamu

関連する問題