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