Queue memproses tugas berat di background — user tidak perlu menunggu.
Kapan pakai queue?
- Kirim email (lambat karena network)
- Process image (resize, compress)
- Generate PDF/report
- Sync data ke external API
Membuat Job:
class ProcessVideoUpload implements ShouldQueue
{
use Queueable;
public function __construct(
public Video $video,
) {}
public function handle(): void {
// Ini berjalan di background worker
FFmpeg::convert($this->video->path, "mp4");
$this->video->update(["status" => "processed"]);
}
public function failed(Throwable $exception): void {
// Jika job gagal
$this->video->update(["status" => "failed"]);
Log::error("Video processing failed", ["id" => $this->video->id]);
}
}
Dispatch job:
// Dari controller
ProcessVideoUpload::dispatch($video);
// Delayed
ProcessVideoUpload::dispatch($video)->delay(now()->addMinutes(5));
// Specific queue
ProcessVideoUpload::dispatch($video)->onQueue("video-processing");
Queue worker:
php artisan queue:work --queue=video-processing