我正在使用akka.routing.Router
演员向不同类型的演员广播Work
。我使用akka.routing.BroadcastRoutingLogic
来表达这种行为。 Router
包含每种类型的单个参与者(Type1Actor
执行作业1 Work
,Type2Actor
作业2使用相同的Work
...)。
当演员被终止(无论怎样)时,我会收到:
def receive = {
//...
case Terminated(a) => //HERE DO SOMETHING
}
我想更新我的路线,以便始终保持相同数量的活跃演员并拥有相同数量的活动演员。
Terminated
演员的类型很重要:我不希望两个同一类型的演员完成两次作业,我不希望作演不由演员TypeXActor
完成
有没有办法从已终止的引用(Props
这里)检索相应的a
?如果不是我的选择?
答案 0 :(得分: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
}