laravel queue job | java php laravel linux mysql sql bootstrap html css query java php laravel linux mysql sql bootstrap html css query: laravel queue job

Sunday, April 12, 2026

laravel queue job

⚙️ Laravel 🔥 Seri #31 🚀 Intermediate
Artikel 31 dari 50 — Seri Belajar Laravel Lengkap

Queue & Job:
Proses Berat di Background

Kirim email 10.000 user sekaligus? Proses laporan PDF besar? Kenapa harus bikin user nunggu? Pelajari cara Laravel Queue & Job bekerja — dan ubah aplikasimu dari lemot jadi lincah.

⏱ 10
Menit Baca
🎓
Intermediate
2025
Update Terbaru

Bayangkan kamu lagi antri di kasir minimarket. Tiba-tiba si kasir bilang, "Maaf ya, saya harus cetak laporan dulu, tunggu 5 menit." Kamu pasti kesel, kan? Nah, hal yang persis sama bisa terjadi di aplikasi web kamu — kalau kamu nggak pakai Queue & Job di Laravel. Fitur inilah yang memisahkan aplikasi "amatiran" dari aplikasi yang benar-benar production-ready.

Dalam seri 50 Artikel Belajar Laravel ini, di artikel ke-31 kita akan bahas tuntas bagaimana Queue dan Job bekerja untuk memindahkan proses berat ke background — biar user tetap happy dan aplikasimu tetap responsif. Siap? Gas!

📌 Konsep Utama

Apa Itu Queue & Job di Laravel?

Job adalah unit pekerjaan tunggal yang bisa ditunda eksekusinya. Queue adalah antrian tempat Job-job tersebut menunggu giliran diproses oleh worker di background — terpisah dari request utama user. Hasilnya: user dapat respons cepat, proses berat tetap berjalan di belakang layar.

1. Kenapa Kamu Butuh Queue? Analogi Kasir vs Chef

Coba pikirin restoran cepat saji. Kasir di depan tugasnya hanya menerima pesanan — bukan masak sendiri. Dia catat pesanan, lempar ke dapur, dan langsung layani pelanggan berikutnya. Chef di dapur masak sesuai antrian. Ini adalah persis cara kerja Queue di Laravel!

🐌
Tanpa Queue
  • User nunggu proses selesai
  • Timeout kalau proses lama
  • Server bisa overload
  • UX buruk = user kabur
🚀
Dengan Queue
  • User dapat respons instan
  • Proses jalan di background
  • Beban server terdistribusi
  • UX smooth = user senang
🔥
Fakta Menarik

Menurut penelitian Google, 53% pengguna mobile meninggalkan halaman yang loading lebih dari 3 detik. Dengan Queue, halaman kamu bisa merespons dalam milidetik meski ada proses berat yang berjalan!

2. Konfigurasi Queue & Cara Membuat Job di Laravel

Sebelum bisa menggunakan Queue Job Laravel, kamu perlu setup driver queue-nya. Laravel mendukung berbagai driver: database, redis, sqs, hingga sync untuk testing.

1

Set Driver Queue di .env

# .env
QUEUE_CONNECTION=database
2

Buat Tabel Queue di Database

# Terminal
php artisan queue:table
php artisan migrate
3

Generate Job Class

# Buat Job baru
php artisan make:job SendEmailBlast

File akan tersimpan di app/Jobs/SendEmailBlast.php

4

Isi Logic di dalam Job

// app/Jobs/SendEmailBlast.php
<?php

namespace App\Jobs;

use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use App\Models\User;
use Illuminate\Support\Facades\Mail;

class SendEmailBlast implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    public function __construct(public User $user) {}

    public function handle(): void
    {
        // Kirim email ke user
        Mail::to($this->user->email)
            ->send(new \App\Mail\NewsletterMail());
    }
}
5

Dispatch Job dari Controller

// Di dalam Controller
use App\Jobs\SendEmailBlast;

public function sendNewsletter()
{
    $users = User::all();

    foreach ($users as $user) {
        // Masukkan ke antrian, bukan eksekusi langsung!
        SendEmailBlast::dispatch($user);
    }

    return back()->with('success', 'Email sedang dikirim di background!');
}
💡
Tips Pro

Gunakan ShouldQueue interface agar Job otomatis masuk antrian. Tanpa interface ini, Job akan dieksekusi synchronously — artinya user tetap harus nunggu. Jangan lupa implementasikan interface-nya!

3. Fitur Lanjutan: Delay, Retry, dan Failed Jobs

Queue bukan cuma "taruh job, jalankan." Ada banyak fitur canggih yang bikin sistem antrian kamu makin robust. Berikut beberapa yang wajib kamu tahu:

🔬 Fitur-Fitur Penting Queue

⏳ Delay — Tunda Eksekusi Job
// Eksekusi 10 menit kemudian
SendEmailBlast::dispatch($user)
    ->delay(now()->addMinutes(10));
🔄 Retry — Otomatis Coba Ulang kalau Gagal
// Di dalam class Job
public int $tries = 3; // Coba 3x sebelum failed
public int $timeout = 120; // Timeout 120 detik
💀 Failed Jobs — Tangani Job yang Gagal Total
// Buat tabel failed_jobs
php artisan queue:failed-table
php artisan migrate

// Lihat daftar job yang gagal
php artisan queue:failed

// Jalankan ulang job yang gagal
php artisan queue:retry all
Insight Penting

Di production, gunakan Redis sebagai queue driver — bukan database. Redis jauh lebih cepat karena beroperasi di memory. Untuk proyek kecil-menengah, driver database sudah cukup, tapi siap-siap upgrade ke Redis saat traffic naik!

4. Menjalankan Worker & Tips Queue di Production

Job yang sudah di-dispatch nggak akan diproses sendiri. Kamu perlu menjalankan Queue Worker — proses yang terus berjalan dan mengambil job dari antrian. Ini bagian krusial yang sering dilupakan developer pemula!

🖥️ COMMAND QUEUE WORKER
# Jalankan worker (basic)
php artisan queue:work

# Worker dengan nama queue spesifik
php artisan queue:work --queue=emails,notifications

# Worker yang otomatis restart setelah setiap job (aman di production)
php artisan queue:work --sleep=3 --tries=3 --max-time=3600

# Restart worker setelah deploy (WAJIB dilakukan!)
php artisan queue:restart
⚠️
Perhatian!

Di production, jangan menjalankan worker secara manual di terminal karena akan mati kalau terminal ditutup. Gunakan Supervisor (Linux process manager) atau Laravel Horizon untuk memastikan worker selalu berjalan 24/7 secara otomatis.

Perbandingan Queue Driver

Driver Kecepatan Penggunaan Rekomendasi
sync Instant Testing/Dev Development
database Sedang Tanpa infra tambahan Kecil-Menengah
redis Sangat Cepat High traffic Production
sqs Sangat Cepat AWS ecosystem Enterprise/Cloud
💡
Tips Bonus

Gunakan queue priority untuk mendahulukan job penting. Misalnya: queue high untuk notifikasi pembayaran, queue default untuk email newsletter. Jalankan: php artisan queue:work --queue=high,default

📝 Kesimpulan

Queue & Job: Fondasi Aplikasi Laravel yang Scalable

Selamat, kamu sudah memahami cara kerja Queue & Job di Laravel! Mari kita recap poin-poin pentingnya:

  • Queue adalah antrian untuk menunda proses berat ke background
  • Job adalah unit pekerjaan tunggal yang didispatch ke antrian
  • Gunakan ShouldQueue agar Job berjalan asynchronous
  • Fitur delay, retry, dan failed jobs bikin sistem lebih robust
  • Jalankan worker dengan php artisan queue:work
  • Di production, gunakan Supervisor + Redis untuk performa terbaik

Dengan menguasai Queue Job Laravel, aplikasimu akan terasa jauh lebih cepat dan profesional. User nggak perlu lagi nunggu lama — dan server kamu juga bernafas lebih lega! 🚀

💬 Punya pertanyaan atau pengalaman menarik soal Queue di Laravel? Tulis di kolom komentar di bawah! Dan kalau artikel ini bermanfaat, jangan lupa share ke teman-teman yang lagi belajar Laravel juga ya. Subscribe supaya nggak ketinggalan artikel selanjutnya!

#Laravel #PHP #QueueJob #BackgroundProcess #WebDevelopment #Tutorial #BelajarLaravel

No comments:

Post a Comment

saifiahmada.com adalah blog belajar programming Indonesia, membahas lengkap materi bahasa pemrograman: code HTML, CSS, Bootstrap, Desain, PHP, MySQL, coding Java, Query, SQL, dan dunia linux