阿卡获得演员的类型

时间:2014-10-04 08:42:57

标签: java akka

我有两个课程 A B 都延伸untypedActor我创建了另一个演员 C 到 通过使用 getContext()。watch(A / b的actorRef)观看这两个演员,当这两个演员A,B中的任何一个被终止时,我得到一个终止消息给C,我有在某个任务之后重新启动它,具体取决于哪个actor终止是A或B.

我怎么知道哪个演员被

等任何方法终止
 if(terminatedActor instanceOf A){
     // Do task on termination of A
     // create A
 }else if(terminatedActor instanceOf B ){
     // Do task on termination of B
     // create B
 }

2 个答案:

答案 0 :(得分:2)

由于ActorRef只是实现的代理,因此它不会为您提供所需的信息。

我管理它的方法是存储对我在管理程序中创建的actor的引用,该引用指示类型。有多种方法可以做到这一点,我用过的一种方法是将ActorRef存储在Map中。然后,您可以使用Terminated ActorRef从Map获取值,告诉您它的类型。或者只是在UntypedActor上创建内部属性来保存引用然后检查一个,直到找到匹配并重新创建它。

答案 1 :(得分:0)

我只需要监控2-3种类型的actor,所以我为每种类型实现了不同的监视器。