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.
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.