【发布时间】:2016-06-11 19:40:11
【问题描述】:
在 akka 层次结构下面是父子节点,父子节点向子节点发送消息,子节点以值 1 响应。但父节点似乎没有收到该值,因为消息“received is 1”没有打印到控制台.
我的层次结构设置正确吗? :
import akka.actor.Actor
import akka.actor.ActorSystem
import akka.actor.Props
class ChildActor extends Actor {
def receive = {
case receivedValue: Int => {
println(receivedValue);
context.parent ! 1
}
}
}
object ParentChild extends App {
val system = ActorSystem()
val parentActor = system.actorOf(Props[ParentActor])
class ParentActor extends Actor {
val childActor = system.actorOf(Props[ChildActor])
childActor ! 1
def receive = {
case v: Int => println("received is " + v);
}
}
}
【问题讨论】:
-
你在哪里向子演员发送消息?
-
问题是子actor实际上并不是父actor的子actor,一个actor不会成为子actor只是在父actor中创建一个引用,您实际上需要在父上下文中创建一个引用。因此,您需要使用
context.actorOf(Props[ChildActor])而不是system.actorOf(Props[ChildActor])。 -
@curious 有效,如果回答错误接受