Scala Akka Hello World: простой пример и дополнительные методы

Вот пример кода Scala для простого сообщения «Hello, World!» приложение, использующее Akka:

import akka.actor.{Actor, ActorSystem, Props}
// Define an actor
class HelloWorldActor extends Actor {
  def receive: Receive = {
    case "hello" => println("Hello, World!")
    case _       => println("Unknown message!")
  }
}
// Create an actor system
val system = ActorSystem("HelloWorldSystem")
// Create an instance of the HelloWorldActor
val helloActor = system.actorOf(Props[HelloWorldActor], "helloActor")
// Send a message to the HelloWorldActor
helloActor ! "hello"
// Terminate the actor system
system.terminate()

Этот код создает систему актеров, определяет актера с именем HelloWorldActor, создает экземпляр актера и отправляет ему сообщение. Затем актер печатает «Привет, мир!» когда он получит сообщение.

Вот несколько дополнительных методов, обычно используемых с Akka:

  1. Создание дочерних актеров:

    val childActor = system.actorOf(Props[ChildActor], "childActor")

    Этот код создает дочернего актера в системе актеров.

  2. Отправка сообщений актерам:

    helloActor ! "hello"

    Этот код отправляет сообщение экземпляру helloActorс помощью оператора !.

  3. Обработка сообщений в актере:

    class HelloWorldActor extends Actor {
    def receive: Receive = {
    case "hello" => println("Hello, World!")
    case name: String => println(s"Hello, $name!")
    case _ => println("Unknown message!")
    }
    }

    Этот код демонстрирует, как актер может обрабатывать различные типы сообщений.

  4. Зацепки жизненного цикла актера:

    class HelloWorldActor extends Actor {
    override def preStart(): Unit = {
    // Initialization code
    }
    
    override def postStop(): Unit = {
    // Cleanup code
    }
    
    def receive: Receive = {
    case "hello" => println("Hello, World!")
    case _       => println("Unknown message!")
    }
    }

    Этот код показывает, как использовать перехватчики жизненного цикла, такие как preStartи postStop, для выполнения задач инициализации и очистки.