Laravel Events Jobs Listeners Decision When To Use
Definisi
Ketiganya sering bingung karena sama-sama "reaksi terhadap sesuatu", tapi perannya beda:
- Event: fakta bahwa "sesuatu terjadi" (misal
UserRegistered). Event tidak melakukan kerja, hanya mengumumkan. - Listener: penangan satu event. Bisa sinkron (langsung jalan) atau di-queue (jadi job di belakang).
- Job: unit kerja yang dijalankan secara async oleh worker, bisa di-retry. Job biasanya dipanggil dari listener atau langsung di-dispatch.
Kapan dipakai
- Event + Listener: saat satu aksi memicu banyak efek samping yang boleh berkembang tanpa mengubah kode pemanggil (observer pattern).
UserRegistered→ kirim email, buat profile, notify admin. - Job: saat pekerjaannya lambat/berat dan harus lepas dari request (resize gambar, panggil API pihak ketiga, kirim notifikasi massal).
- Listener di-queue: saat reaksi event memang berat, sehingga event dipancarkan cepat lalu listener jalan di background.
Cara kerja
Event & listener
// app/Events/UserRegistered.php
class UserRegistered {
use SerializesModels;