Для Akka 2.x требуется множество команд для ссылки ActorSystem
. Итак, чтобы создать экземпляр актера MyActor
, вы можете сказать:
val system = ActorSystem()
val myActor = system.actorOf(Props[MyActor])
Из-за частых потребностей в ActorSystem
: многие примеры кода опускают создание из кода и предполагают, что читатель знает, откуда появилась переменная system
.
Если ваш код создает участников в разных местах, вы можете дублировать этот код, возможно, создавая дополнительные экземпляры ActorSystem
, или вы можете попробовать использовать один и тот же экземпляр ActorSystem
, обратившись к некоторому глобальному или передав ActorSystem
вокруг.
Документация Akka предоставляет общий обзор систем участников под заголовком "Системы актеров" и документация класса ActorSystem
. Но ни одна из них не помогает в объяснении того, почему пользователь Акки не может просто полагаться на Акку, чтобы управлять этим под капотом.
Вопрос (ы)
-
Каковы последствия совместного использования одного и того же объекта
ActorSystem
или создания нового? -
Каковы лучшие практики здесь? Прохождение вокруг
ActorSystem
все время кажется удивительно тяжелым. -
Некоторые примеры дают имя
ActorSystem
a:ActorSystem("MySystem")
другие просто вызываютActorSystem()
. Какая разница, и что, если вы используете одно и то же имя дважды? -
Требуется ли
akka-testkit
, чтобы вы делили общийActorSystem
с тем, который вы передаете конструкторуTestKit
?