Keduanya stop
dan PoisonPill
akan menghentikan aktor dan menghentikan antrian pesan. Mereka akan menyebabkan aktor berhenti memproses pesan, mengirim panggilan berhenti ke semua anak-anaknya, menunggu mereka untuk mengakhiri, kemudian memanggilpostStop
kaitnya. Semua pesan lebih lanjut dikirim ke kotak surat surat mati.
Perbedaannya adalah di mana pesan diproses sebelum urutan ini dimulai. Dalam hal stop
panggilan, pesan yang sedang diproses diselesaikan terlebih dahulu, dan semua yang lain dibuang. Saat mengirim PoisonPill
, ini hanyalah pesan lain dalam antrian, jadi urutannya akan dimulai ketika PoisonPill
diterima. Semua pesan yang ada di depannya dalam antrian akan diproses terlebih dahulu.
Sebaliknya, Kill
pesan tersebut menyebabkan aktor melemparActorKilledException
yang ditangani menggunakan mekanisme pengawas normal. Jadi perilaku di sini tergantung pada apa yang telah Anda tetapkan dalam strategi penyelia Anda. Standarnya adalah menghentikan aktor. Tetapi kotak surat tetap ada, jadi ketika aktor restart itu masih akan memiliki pesan-pesan lama kecuali yang menyebabkan kegagalan.
Lihat juga bagian 'Menghentikan Aktor', 'Membunuh Aktor' dalam dokumen:
http://doc.akka.io/docs/akka/snapshot/scala/actors.html
Dan lebih lanjut tentang strategi pengawasan:
http://doc.akka.io/docs/akka/snapshot/scala/fault-tolerance.html