如何在Akka中向演员的父母发送消息? (Java语言)

时间:2013-07-25 09:05:23

标签: java akka

新手的问题:

演员向父母发送消息的方法是什么?必须明显,但我无法在文档中找到它。 使用Akka 2.2

3 个答案:

答案 0 :(得分:37)

您正在寻找

getContext().parent()

它为您提供了父级的ActorRef,因此您可以执行

getContext().parent().tell(...)

答案 1 :(得分:14)

使用Akka 2.4,您必须在actor中执行context.parent以获得其父actor参考。之后,您可以像以前一样向其发送消息(context.parent ! "hello")。

答案 2 :(得分:0)

应注意,例如对于通过搜索提出此问题的任何人,Akka 2.6引入了用于与参与者进行交互并定义参与者的类型化API,并且从2.6版本开始的文档都指导如何使用类型化API。

在使用类型化API定义的actor中,ActorContext不再直接向父actor提供ActorRef,因此上述答案无效。有关Akka Typed中的(Scala)解决方案,请参见this question。类似的Java API将是:

import akka.actor.typed.javadsl.Adapter

ActorRef parent = Adapter.toClassic(getContext()).parent()

请注意,这是未键入的ActorRef:您可以向父级演员发送任何消息,但父级演员没有义务接受您发送的消息。