P
PUGUH

Background Jobs

PUGUH menyediakan managed job queue untuk pemrosesan asinkron, tugas terjadwal, dan pengiriman yang andal dengan dukungan dead letter queue.

Ringkasan

Background jobs menangani pekerjaan yang tidak seharusnya memblokir response API:

  • Pengiriman email — email selamat datang, reset password, undangan
  • Pengiriman webhook — mengirim notifikasi event ke endpoint
  • Pemrosesan gambar — membuat thumbnail dan varian setelah upload
  • Ekspor data — ekspor GDPR, download data massal
  • Tugas terjadwal — pekerjaan berulang berbasis cron
  • Pembersihan — menghapus token kadaluarsa, record yang di-soft-delete

Tipe Job

System Jobs

Job ini berjalan otomatis sebagai bagian infrastruktur PUGUH:

JobTriggerDeskripsi
email.sendAksi penggunaMengirim email transaksional
webhook.deliverEventMengirim payload webhook
storage.processUpload fileMembuat varian gambar
export.generateRequest APIMembuat file ekspor data
audit.streamEvent auditMeneruskan event ke tujuan streaming

Scheduled Jobs (Cron)

Pekerjaan berulang yang dikelola melalui scheduling API:

JobJadwal DefaultDeskripsi
token.cleanupSetiap jamMenghapus refresh token kadaluarsa
session.cleanupSetiap 6 jamMembersihkan sesi kadaluarsa
softdelete.purgeHarian pukul 03:00Hard-delete record yang melewati retensi
usage.aggregateSetiap jamMengagregasi metrik penggunaan untuk billing
invoice.generateTanggal 1 setiap bulanMembuat invoice bulanan

Melihat Jobs

Daftar Jobs

bash
curl https://api-puguh.arsaka.io/jobs?status=running&page=1 \
  -H "Authorization: Bearer YOUR_TOKEN"

Response:

json
{
  "items": [
    {
      "id": "job_abc123",
      "type": "email.send",
      "status": "completed",
      "payload": {"to": "user@example.com", "template": "welcome"},
      "created_at": "2026-02-20T10:00:00Z",
      "started_at": "2026-02-20T10:00:01Z",
      "completed_at": "2026-02-20T10:00:03Z",
      "attempts": 1
    }
  ],
  "total": 1523,
  "page": 1,
  "page_size": 20,
  "has_next": true,
  "has_prev": false
}

Status Job

StatusDeskripsi
pendingDalam antrian, menunggu diproses
runningSedang diproses
completedBerhasil diselesaikan
failedGagal setelah semua percobaan retry
deadDipindahkan ke dead letter queue

Dead Letter Queue (DLQ)

Job yang gagal setelah semua percobaan retry dipindahkan ke DLQ untuk inspeksi manual.

Lihat DLQ

bash
curl https://api-puguh.arsaka.io/jobs/dlq \
  -H "Authorization: Bearer YOUR_TOKEN"

Retry Job DLQ

bash
curl -X POST https://api-puguh.arsaka.io/jobs/dlq/job_xyz/retry \
  -H "Authorization: Bearer YOUR_TOKEN"

Job dipindahkan kembali ke antrian pending untuk diproses ulang.

Purge DLQ

bash
curl -X POST https://api-puguh.arsaka.io/jobs/dlq/purge \
  -H "Authorization: Bearer YOUR_TOKEN"

Peringatan

Melakukan purge DLQ akan menghapus semua dead jobs secara permanen. Tindakan ini tidak dapat dibatalkan.

Jadwal Job

Buat jadwal cron kustom untuk tugas berulang:

Membuat Jadwal

bash
curl -X POST https://api-puguh.arsaka.io/jobs/schedules \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -d '{
    "name": "Daily usage report",
    "cron_expression": "0 8 * * *",
    "job_type": "export.generate",
    "payload": {"type": "usage", "format": "csv"},
    "is_active": true
  }'

Sintaks Cron

FieldNilaiContoh
Menit0-590 (pada menit 0)
Jam0-238 (pada pukul 08:00)
Tanggal1-31* (setiap hari)
Bulan1-12* (setiap bulan)
Hari dalam minggu0-61-5 (Sen-Jum)

Daftar Jadwal

bash
curl https://api-puguh.arsaka.io/jobs/schedules \
  -H "Authorization: Bearer YOUR_TOKEN"

Memperbarui Jadwal

bash
curl -X PATCH https://api-puguh.arsaka.io/jobs/schedules/sched_abc \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -d '{"is_active": false}'

Menghapus Jadwal

bash
curl -X DELETE https://api-puguh.arsaka.io/jobs/schedules/sched_abc \
  -H "Authorization: Bearer YOUR_TOKEN"

Kebijakan Retry

Job yang gagal akan di-retry secara otomatis dengan exponential backoff:

plaintext
Attempt 1: immediate
Attempt 2: after 30 seconds
Attempt 3: after 2 minutes
Attempt 4: after 10 minutes
Attempt 5: after 1 hour
→ If all fail: moved to DLQ

Batas per Paket

PaketMaks ConcurrentJadwalRetensi DLQ
Free537 hari
Pro251030 hari
Business1005090 hari
EnterpriseCustomCustomCustom

Monitoring

Metrik job tersedia di dashboard PUGUH:

  • Throughput: Job yang diproses per menit
  • Error rate: Persentase job yang gagal
  • Queue depth: Jumlah job dalam antrian
  • Ukuran DLQ: Jumlah dead jobs
  • Latensi rata-rata: Waktu dari masuk antrian hingga selesai

Terkait