新手的问题:
演员向父母发送消息的方法是什么?必须明显,但我无法在文档中找到它。 使用Akka 2.2
答案 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
:您可以向父级演员发送任何消息,但父级演员没有义务接受您发送的消息。