执行元向其父级发送消息的方法是什么?我用的是Akka 2.2
tcbh2hod1#
您正在寻找
getContext().parent()
它会提供父代的ActorRef,因此您可以
getContext().parent().tell(...)
toe950272#
在Akka 2.4中,你必须在一个演员内部执行context.parent,以获得其父演员的引用。之后,你可以像以前一样给它发送一条消息(context.parent ! "hello")。
context.parent
context.parent ! "hello"
wko9yo5t3#
需要注意的是,Akka 2.6引入了一个类型化的API,用于与参与者交互和定义参与者,从2.6版本开始的文档将指导使用类型化的API。在使用类型化API定义的参与者中,ActorContext不再直接向父参与者提供ActorRef,因此上面的答案不起作用。请参见Akka Typed中的this question(Scala)解决方案。类似的Java API如下:
ActorContext
ActorRef
import akka.actor.typed.javadsl.Adapter ActorRef parent = Adapter.toClassic(getContext()).parent()
请注意,这是一个非类型化的ActorRef:您可以向父执行元发送任何消息,但是父执行元没有任何义务接受您发送的消息。
3条答案
按热度按时间tcbh2hod1#
您正在寻找
它会提供父代的ActorRef,因此您可以
toe950272#
在Akka 2.4中,你必须在一个演员内部执行
context.parent
,以获得其父演员的引用。之后,你可以像以前一样给它发送一条消息(context.parent ! "hello"
)。wko9yo5t3#
需要注意的是,Akka 2.6引入了一个类型化的API,用于与参与者交互和定义参与者,从2.6版本开始的文档将指导使用类型化的API。
在使用类型化API定义的参与者中,
ActorContext
不再直接向父参与者提供ActorRef
,因此上面的答案不起作用。请参见Akka Typed中的this question(Scala)解决方案。类似的Java API如下:请注意,这是一个非类型化的
ActorRef
:您可以向父执行元发送任何消息,但是父执行元没有任何义务接受您发送的消息。