Ниже иерархии akka является родительским родителем, в котором родитель отправляет сообщение дочернему устройству, а дочерний элемент отвечает значением 1. Но родитель не получает, чтобы получать значение, поскольку сообщение «получено 1 "не выводится на консоль.Родитель Akka, не получающий сообщение от ребенка
Правильно ли настроена моя иерархия? :
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);
}
}
}
Куда вы отправляете сообщение своему Актеру? – curious
Проблема заключается в том, что ребенок-актер фактически не является дочерним по отношению к родителям, актер не становится дочерним актером, просто создавая ссылку в родительском, вам действительно нужно создать ссылку в контексте родителя. Поэтому вместо 'system.actorOf (Props [ChildActor])' вам нужно сделать 'context.actorOf (Props [ChildActor])'. – curious
@ cage, который работает, если в него ответить –