我有 3 个演员的层次结构:
SM -> R -> W
SM - 服务经理 R - 路由器 W - 工人
SM 创建了 R 角色,而后者又创建了部署在远程节点上的角色 W。
创建 Actor W 需要一些时间,因为它从外部服务收集信息,因此延迟几秒钟是正常的。因此,preStart()
我想从 W 向 SM 发送一条消息,说明 init 已完成并且可以完全运行。
我试图通过这种方式从 W 联系到 SM 演员:
val myCreatorServiceManagerActorPath = self.path.parent.parent
context.actorSelection(myCreatorServiceManagerActorPath) ! RegisteredServiceWorker(serviceName)
所有这些消息都会进入 deadLetter 收件箱。如果我错了,请纠正我,但本地化不应该是透明的吗?联系SM演员的正确方式是什么?
如果它有任何帮助,这里是死信日志
monitor [INFO] [03/28/2014 11:34:49.253] [application-akka.actor.default-dispatcher-18] [akka://application/remote/akka.tcp/application@127.0.0.1:2558/user/ServiceManager] Message [pl.mlife.mcloud.runner.common.ServiceRuntimeActor$RegisteredServiceWorker] from Actor[akka://application/remote/akka.tcp/application@127.0.0.1:2558/user/ServiceManager/sample/c3#-1356554194] to Actor[akka://application/remote/akka.tcp/application@127.0.0.1:2558/user/ServiceManager] was not delivered. [3] dead letters encountered. This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'.