Supervision & Strategi Restart
Penjelasan
Salah satu keunggulan utama Akka adalah fault tolerance lewat supervision. Ketika sebuah actor melempar exception saat memproses pesan, bukan seluruh aplikasi yang crash — Akka mengisolasi kegagalan itu dan meminta actor induk memutuskan apa yang terjadi selanjutnya lewat supervision strategy. Ada empat strategi dasar: `resume` (abaikan pesan yang gagal, lanjut dengan state lama), `restart` (buat ulang actor dari awal, state direset, tapi mailbox tetap diproses), `stop` (hentikan actor tersebut permanen), dan `escalate` (lempar kegagalan ke induk di atasnya lagi). Di Akka Typed, strategi ini didefinisikan lewat `Behaviors.supervise(behavior).onFailure[TipeException](SupervisorStrategy.restart)`, yang bisa membungkus behavior actor apapun. Filosofi 'let it crash' Akka mendorong kita untuk tidak defensif menangkap semua exception secara manual di dalam actor — biarkan actor gagal dan crash, lalu percayakan supervisor untuk memulihkannya, karena mencoba menangani semua kemungkinan error secara eksplisit sering membuat kode jadi rumit dan rentan bug tersembunyi.
Contoh Konsep
import akka.actor.typed.{Behavior, SupervisorStrategy}
import akka.actor.typed.scaladsl.Behaviors
object PemrosesData {
sealed trait Pesan
case class Proses(data: String) extends Pesan
def apply(): Behavior[Pesan] =
Behaviors.supervise[Pesan] {
Behaviors.receiveMessage {
case Proses(data) =>
if (data.isEmpty) throw new IllegalArgumentException("data kosong")
println(s"Memproses: $data")
Behaviors.same
}
}.onFailure[IllegalArgumentException](SupervisorStrategy.restart)
}
Praktikum
Bungkus actor PembagiAngka (yang bisa melempar ArithmeticException saat pembagi 0) dengan supervision strategy resume, sehingga actor tetap hidup dan mengabaikan pesan yang gagal.
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
Pilih strategi restart untuk error yang berkaitan dengan state actor yang mungkin korup, dan resume hanya untuk error yang aman diabaikan tanpa merusak konsistensi state — salah pilih strategi bisa membuat actor terus memproses data yang sebenarnya sudah tidak valid.