如何在 akka 经典中给演员的父母发信息?

jmp7cifd  于 2022-11-06  发布在  其他
关注(0)|答案(3)|浏览(115)

执行元向其父级发送消息的方法是什么?
我用的是Akka 2.2

tcbh2hod

tcbh2hod1#

您正在寻找

getContext().parent()

它会提供父代的ActorRef,因此您可以

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

toe950272#

在Akka 2.4中,你必须在一个演员内部执行context.parent,以获得其父演员的引用。之后,你可以像以前一样给它发送一条消息(context.parent ! "hello")。

wko9yo5t

wko9yo5t3#

需要注意的是,Akka 2.6引入了一个类型化的API,用于与参与者交互和定义参与者,从2.6版本开始的文档将指导使用类型化的API。
在使用类型化API定义的参与者中,ActorContext不再直接向父参与者提供ActorRef,因此上面的答案不起作用。请参见Akka Typed中的this question(Scala)解决方案。类似的Java API如下:

import akka.actor.typed.javadsl.Adapter

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

请注意,这是一个非类型化的ActorRef:您可以向父执行元发送任何消息,但是父执行元没有任何义务接受您发送的消息。

相关问题