Memahami tantangan konsistensi queue di CodeIgniter 4

Problem utama queue yang tidak konsisten adalah job yang diproses lebih dari sekali, job tertinggal saat worker restart, atau queue tiba-tiba naik tajam tanpa visibilitas. Untuk menjawabnya, gunakan cache lokal (atau Redis) sebagai mekanisme locking ringan sambil mempertahankan metadata job di storage persisten. Pendekatan ini menjaga agar satu worker tidak mengerjakan job yang sama, membuat retry aman, dan memberikan sinyal ketika queue backlog.

Artikel ini menuntun Anda membangun worker queue berbasis CodeIgniter 4 lengkap dengan locking cache, strategi konsistensi, serta cara mengamati status queue agar DevOps bisa lebih cepat merespon gangguan.

Desain arsitektur queue stabil

1. Job queue persistence

Simpan job di tabel database atau storage lain (misalnya Redis List). Minimum field: id, payload, status, attempts, dan locked_until. Worker membaca job dengan status pending atau retry, lalu segera memperbarui status menjadi processing dan mengisi locked_until untuk mencegah worker lain menarik job sama.

2. Cache lokal sebagai locking layer

Gunakan CodeIgniter Cache Service untuk menyimpan lock sementara. Driver file juga cukup untuk deployment kecil; Redis atau APCu cocok bila cluster worker banyak. Lock memastikan job tidak dijalankan ganda sementara masih dalam proses dan tahan TTL pendek agar stale lock tidak mengorbankan job.

Membangun worker queue dengan cache dan locking

Buat CLI command agar cron atau supervisor bisa menjalankan worker terus menerus.

namespace Appotadgingotadge worker; use CodeIgniterotadgingotadge? extends BaseCommand? ???