我有两个类A,B都扩展了untypedActor,我创建了另一个演员C来
通过使用getContext()。watch(A / b的actorRef)监视这两个参与者,当这两个参与者A,B中的任何一个终止时,我会收到一条Terminated消息给C,根据某些任务,我必须在该消息上重新启动它演员终止的演员是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
 }

最佳答案

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

我管理此问题的方法是将对我创建的角色的引用存储在主管中,以指示类型。您可以通过多种方式执行此操作,我使用的一种方法是将ActorRef存储在地图中。然后,您可以使用Terminate ActorRef从Map中获取值,以告诉您它是什么类型。或者,只需在UntypedActor上创建内部属性来保存引用,然后选中一个直到找到匹配项并重新创建它。

10-07 16:21