Нужно ли мне повторно -использовать одну и ту же Akka ActorSystem или я могу просто создавать ее каждый раз, когда она мне нужна?

Akka 2.x требует, чтобы многие команды ссылались на ActorSystem. Таким образом, чтобы создать экземпляр актора MyActor, вы можете сказать:

val system = ActorSystem()
val myActor = system.actorOf(Props[MyActor])

Из-за частой потребности вActorSystem:многие примеры кода опускают создание из кода и предполагают, что читатель знает, где находится systemпеременная. родом из.

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

Документация Akka предоставляет общий обзор систем акторов под заголовком «Системы акторов», и есть документация по ActorSystemклассу . Но ни один из них не помогает объяснить, почему пользователь Akka не может просто полагаться на Akka, чтобы управлять этим под -капотом -.

Вопрос (s)

  • Каковы последствия совместного использования одного и того же объекта ActorSystemили создания каждый раз нового?

  • Каковы наилучшие методы? Передача вокруг ActorSystemвсе время кажется удивительно тяжелой -рукой.

  • Некоторые примеры дают ActorSystemимя :ActorSystem("MySystem"), другие просто называют ActorSystem(). Какая разница, и что, если вы используете одно и то же имя дважды?

  • Требует ли akka-testkit, чтобы вы разделяли общий ActorSystemс тем, который вы передаете конструктору TestKit?

62
задан sroebuck 1 May 2012 в 10:39
поделиться