解决聚集的Actor系统中的路径

时间:2014-03-28 10:01:07

标签: akka akka-cluster

我有3个演员的层次结构: SM -> R -> W SM - 服务经理 R - 路由器 W - 工人

SM创建了R actor,后者又创建了部署在远程节点上的actor 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'.

1 个答案:

答案 0 :(得分:1)

在其构造函数中RSM传递给W。然后直接发送到W,无需使用actorSelection