Tidak ada pengguna yang mau menunggu lebih dari 3 detik. Pindahkan proses berat ke background queue.
Kapan Menggunakan Queue?
Kirim email (jangan pernah sinkron)
Generate PDF atau report besar
Resize dan upload gambar
Memanggil API eksternal
Notifikasi ke banyak user
Setup Queue dengan Redis
QUEUE_CONNECTION=redis
Membuat Job
php artisan make:job SendWelcomeEmail
class SendWelcomeEmail implements ShouldQueue
{
use Queueable;
public function __construct(private User $user) {}
public function handle(): void { Mail::to($this->user)->send(new WelcomeMail($this->user)); } }
Dispatch Job
SendWelcomeEmail::dispatch($user);
// Dengan delay SendWelcomeEmail::dispatch($user)->delay(now()->addMinutes(5));
// Pada queue tertentu SendWelcomeEmail::dispatch($user)->onQueue('emails');
Jalankan Worker
# Development
php artisan queue:work
Production (dengan supervisor)
php artisan queue:work redis --queue=emails,default --sleep=3 --tries=3
Retry dan Error Handling
public int $tries = 3;
public int $backoff = 60; // tunggu 60 detik sebelum retry