Ошибка документации по развертыванию удаленного актера Akka - PullRequest
0 голосов
/ 13 февраля 2019

Я создал простой сценарий.Следующие системы акторов:

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

Идея состоит в том, чтобы создать "SampleActor" из 127.0.0.1:2570, но развернуть создание актера в 127.0.0.1:2560 с использованием конфигурации, указанной в документации: Удаленное создание актеров

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 я хочу найти удаленного развернутого актера иОтправить сообщение.Согласно документам: Поиск удаленных актеров

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());

Разница в том, что на первом я ищу актера, где он развернут, в этом случае в 127.0.0.1:2560, как говорят документыи во втором случае я ищу актера, где было определено создание актера, в данном случае это 127.0.0.1:2570.Почему это происходит? Это не имеет смысла, если я ищу удаленного актера, тогда я должен посмотреть на место, где он был развернут правильно?Также при печати родительского объекта на развернутом актере я получаю:

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

Это делает его более запутанным, поскольку не совпадает с описанным в документации: Взаимодействие с удаленным развертыванием Всеиз-за этого это действительно сбивает с толку, документы очень длинные и не объясняют должным образом, как правильно делать некоторые основные вещи.Может кто-нибудь помочь мне разобраться в этом вопросе?

1 Ответ

0 голосов
/ 04 марта 2019

Ну, очевидно, именно так работает Акка, это довольно запутанно.В конце вы всегда должны посылать сообщения «развертывателю», а не отправителю.«Развертыватель», в свою очередь, отправит сообщение «развернутому».Тот же принцип для всего, что связано с удаленным развертыванием.

...