В Scala мы можем создать Актера, расширив класс akka.actor.Actor и написав метод получения в этом классе. Обычно мы пишем метод получения, используя оператор case, который позволяет актору отвечать на различные типы получаемых им сообщений.

давайте сначала создадим проект, используя имя SBT HelloAkka. Давайте определим информацию о нашем необходимом преобразователе и преобразователе зависимостей в файле build.sbt, который выглядит следующим образом.

имя := «Привет Акка»

версия := "1.0"

scalaVersion := "2.12.1"

resolvers += «Репозиторий Typesage» по адресу
«http://repo.typesafe.com/typesage/releases/»

libraryDependencies += "com.typesafe.akka" %% "akka-actor" % "2.4.12"

если вы новичок в sbt, не беспокойтесь, это так же, как maven или gradle, который специально создан для scala и имеет гораздо больше функций.

Теперь давайте напишем наш первый класс HelloAkka.

импорт akka.actor.{Актер, ActorSystem, Props}

класс HelloActor расширяет Actor{
переопределяет def receive = {
case «hello» =› println («приветственное сообщение получено»)
case _ =› println("Ой, кажется, я пропустил...")
}
}

объект основной расширяет приложение{

//создание системы акторов
val system = ActorSystem("helloworld")

//создание и запуск системы акторов
val helloActor = system.actorOf(Props[HelloActor ], имя = «приветАктер»)

// отправка сообщения актеру
helloActor ! «привет»
привет, актер ! «намасте» // намасте — это непальское/хинди слово для приветствия, например привет/привет ;)

//отключение системы акторов
system.shutdown
}

сохраните этот класс как HelloActor.scala и запустите с помощью sbt run, вы получите следующий вывод

[информация] Выполняется главная
приветственное сообщение получено
Opps Кажется, я пропустил это..

Теперь давайте обсудим, что именно мы сделали

  1. Определяется актор с именем HelloActor, поведение которого определяется переопределенным методом получения.
  2. Мы реализовали метод получения с помощью выражения соответствия (переключатель в Java)
  3. на основе сообщения, полученного от актера, распечатайте приветственное сообщение, полученное при получении приветственного сообщения, и другое, когда сообщение отличается от приветственного
  4. Мы создали объект Main, необходимый для тестирования актера. Для системы на основе акторов нам нужно определить ActorSystem, которая принимает имя и свойство для запуска системы акторов.
  5. Мы создали систему акторов с помощью метода system.actorof.
  6. Актеры автоматически запускаются асинхронно, когда мы вызываем метод actOf, здесь нам не нужно вызывать какой-либо метод start или run.
  7. Сообщения отправляются актерам с помощью ! метод
  8. helloActor отвечает акторам, выполняя операторы println.
  9. Система актора выключается методом выключения.