簡體   English   中英

Akka Remote Actor部署文檔錯誤

[英]Akka remote actor deployment documentation error

我創建了一個簡單的場景。 以下角色系統:

akka.tcp://TestSystem@127.0.0.1:2560
akka.tcp://TestSystem@127.0.0.1:2570
akka.tcp://TestSystem@127.0.0.1:2580

想法是從127.0.0.1:2570創建一個“ SampleActor”,但使用文檔中所述的配置將actor創建部署到127.0.0.1:2560: 遠程創建Actor

akka {
  actor {
    deployment {
      /sampleActor {
        remote = "akka.tcp://TestSystem@127.0.0.1:2560"
      }
    }
  }
}

然后在127.0.0.1:2570上:

system.actorOf(Props.create(SampleActor.class), "sampleActor");

現在從127.0.0.1:2580,我想找到遠程部署的actor並發送一條消息。 根據文檔: 查找遠程角色

ActorSelection selection =
                system.actorSelection("akka.tcp://TestSystem@127.0.0.1:2560/user/sampleActor");
        selection.tell("Pretty slick", ActorRef.noSender());

但是,這不起作用。 它無法在127.0.0.1:2560上找到演員。 但是,如果我更改為:

ActorSelection selection =
                    system.actorSelection("akka.tcp://TestSystem@127.0.0.1:2570/user/sampleActor");
            selection.tell("Pretty slick", ActorRef.noSender());

區別在於,在第一個案例中,我正在尋找部署它的actor,在這種情況下,如文檔所述,在127.0.0.1:2560中,而在第二個案例中,我正在尋找actor創建所在的actor定義,在這種情況下是127.0.0.1:2570。 為什么會發生這種情況?這沒有任何意義,如果我正在尋找一個遠程演員,那么我應該看看部署它的正確位置嗎? 另外,在已部署的actor上打印父級時,我得到:

akka://TestSystem/remote/akka.tcp/TestSystem@127.0.0.1:2570/user

這與文檔中描述的不一樣,因此更加令人困惑: 與遠程部署的相互作用所有這些都使它真正令人困惑,文檔很長,並且沒有正確地解釋如何正確地做一些基本的事情。 有人可以幫我了解這個問題嗎?

顯然,這就是akka的工作方式,這很令人困惑。 最后,您應該始終將消息發送給“部署者”而不是被部署者。 “部署者”將依次將消息發送給“部署者”。 與遠程部署相關的所有內容都具有相同的原理。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM