【问题标题】:Resolving a path in clustered Actor system解析集群 Actor 系统中的路径
【发布时间】:2014-03-28 10:01:06
【问题描述】:

我有 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'.

【问题讨论】:

    标签: akka akka-cluster


    【解决方案1】:

    R 在其构造函数中将SM 传递给W。然后直接发送到W,不需要使用actorSelection

    【讨论】:

    • 这个主意不错。它仍然没有说明为什么这不起作用。按照设计,本地化透明度应该对此有所帮助。
    猜你喜欢
    • 1970-01-01
    • 2011-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-22
    • 2016-02-06
    • 2020-11-05
    相关资源
    最近更新 更多