Как начать Акку Актеры с 2.0?

Я использую Акка Актеры, и я пытаюсь обновить свой код, чтобы использовать последнюю версию 2.0. API несколько изменился, например, создание Актеров теперь работает через нечто, называемое ActorSystem.

Также изменились начальные и остановившиеся актеры - последние доступны с помощью методов ActorSystems .stop(..) и .shutdown(). Но я могу для жизни не понять, как их начать... Документация хорошая, но, похоже, отсутствуют некоторые важные моменты. Мне кажется глупо спросить, но как вы начинаете актеров в своей среде Akka 2.0? Если я правильно понял, что актеры, у которых есть "родитель", запускаются при запуске этого родителя, но как насчет актера (ов) верхнего уровня?

Ответы

Ответ 1

В Akka 2.0 нет необходимости в методе start(), потому что Actors запускаются, как только вы создаете их в контексте ActorSystem (или другого Actor), но вам нужно создать их с одним из предоставленных методов ActorSystem или Actor context.

Итак, например, если у вас есть подкласс Actor под названием MyClass, вы можете запустить его с помощью:

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

или, если ваш актер принял аргументы конструктора:

val myActor = system.actorOf(Props(new MyActor("arg1"))

или, если вы были в теле другого Актера,

val myActor = context.actorOf(Props(new Actor("arg1"))

и тогда ваш актер мог немедленно получать сообщения, например.

myActor ! MyMessage

Даже ваши действующие лица верхнего уровня начинаются немедленно, так как все Актеры в 2.0 автоматически входят в иерархию наблюдения. Как только актер создается с помощью ActorSystem, он готов принимать сообщения.