Study
Akka

ActorSystem & Behaviors Dasar (Akka Typed)

Penjelasan

Setiap aplikasi Akka dimulai dari sebuah `ActorSystem` — ini adalah container/root dari seluruh hierarki actor, biasanya hanya ada satu ActorSystem per aplikasi. Di Akka Typed (API modern), setiap actor punya tipe pesan yang eksplisit lewat `Behavior[T]`, berbeda dari Akka Classic yang menerima `Any`. `Behavior` mendeskripsikan bagaimana actor bereaksi terhadap pesan yang diterimanya; cara paling umum mendefinisikannya adalah lewat `Behaviors.receive` atau `Behaviors.receiveMessage`, yang menerima function context+pesan lalu mengembalikan `Behavior` berikutnya (bisa behavior yang sama, behavior baru, atau `Behaviors.same` untuk tetap di behavior saat ini). ActorSystem dibuat dengan memanggil `ActorSystem(rootBehavior, "namaSystem")`, di mana rootBehavior adalah actor paling atas dalam hierarki. Keuntungan Akka Typed dibanding Classic: compiler bisa memeriksa tipe pesan saat compile-time, sehingga mengurangi bug runtime akibat mengirim pesan tipe salah ke actor.

Contoh Konsep

import akka.actor.typed.{ActorSystem, Behavior}
import akka.actor.typed.scaladsl.Behaviors

object Sapaan {
  sealed trait Pesan
  case class Sapa(nama: String) extends Pesan

  def apply(): Behavior[Pesan] = Behaviors.receiveMessage {
    case Sapa(nama) =>
      println(s"Halo, $nama!")
      Behaviors.same
  }
}

object MainApp extends App {
  val system: ActorSystem[Sapaan.Pesan] = ActorSystem(Sapaan(), "sistem-sapaan")
  system ! Sapaan.Sapa("Dunia")
}

Praktikum

Lengkapi actor Kalkulator yang menerima pesan Tambah(a, b) lalu mencetak hasil penjumlahan, dan buat ActorSystem untuk menjalankannya.

Editor Latihan

Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.

Tips

Selalu pakai Akka Typed (bukan Classic) untuk project baru — tipe pesan yang eksplisit membuat compiler menangkap kesalahan pengiriman pesan sebelum kode dijalankan, dan ini arah resmi yang direkomendasikan tim Akka sejak versi 2.6.