инициализация систем актеров akka с тем же именем

Я новичок в системе актеров akka. Я немного смущен тем, как называется система акторов. если я напишу

ActorSystem _system1 = ActorSystem.create("multi");
ActorSystem _system2 = ActorSystem.create("multi");
ActorSystem _system3 = ActorSystem.create("multi");

что будет на заднем плане? Будет ли в JVM 3 разных экземпляра системы акторов? если да, то как мне получить доступ к актерам, принадлежащим этим системам актеров, через удаленное взаимодействие?


person amitmula    schedule 26.12.2013    source источник


Ответы (2)


Да, возможно (хотя, вероятно, не рекомендуется) иметь 3 разных ActorSystem в одной JVM. Я говорю «не рекомендуется», потому что акторные системы — это тяжелые ресурсы (пулы потоков и т. д.), и наличие нескольких в одной JVM может быть контрпродуктивным.

Теперь, что касается удаленного взаимодействия, чтобы запустить эти три в одной и той же JVM, вам нужно будет настроить другой порт привязки удаленного взаимодействия (свойство akka.remote.netty.tcp.port) для каждой системы актора, иначе вы столкнетесь с проблемами конфликта портов. Если вы сделаете это правильно, вы сможете различать разные системы акторов, потому что порт включен в путь. Так, например, если вы привязали первую систему субъектов к 2552, то удаленный путь для связи с субъектом, привязанным к имени «foo» в корневой системе, будет следующим:

akka.tcp://multi@someIpAddress:2552/user/foo

Так что, конечно, можно делать то, что вы хотите, но опять же, это не рекомендуется...

person cmbaxter    schedule 27.12.2013

Отвечая на ваш конкретный вопрос об использовании одного и того же имени: это будут отдельные, разъединенные системы акторов.

Имя служит только в качестве метки, которую можно проверить, попробовав для доступа к локальным субъектам между системами.

Что касается удаленного взаимодействия, как указано в руководстве Akka (выделено мной):

Номер порта должен быть уникальным для каждой системы субъектов на одном компьютере, даже если системы субъектов имеют разные имена. Это связано с тем, что каждая акторная система имеет свою собственную сетевую подсистему, прослушивающую подключения и обрабатывающую сообщения, чтобы не мешать другим акторным системам.

person Artur Nowak    schedule 11.02.2016