Supabase Queues Üretimde: pgmq ile Dead-Letter Queue ve Retry Yönetimi
Supabase Queues'ta pgmq ile dead-letter queue, retry limiti ve zehirli mesaj yönetimini üretim ortamı için SQL koduyla anlatan rehber.
Supabase Queues, pgmq eklentisi üzerinden ek altyapı gerektirmeden Postgres içinde dayanıklı bir mesaj kuyruğu sunuyor. Ancak resmi dokümantasyon temel gönder/oku/arşivle akışının ötesine geçmiyor: pgmq'nin yerleşik bir dead-letter queue'su, retry limiti ya da hata bildirimi yok. Sürekli başarısız olan bir mesaj sonsuza kadar tekrar denenir ve worker kapasitesini tüketir.
Bu makale, pgmq'nin read_ct sütununu ücretsiz bir retry sayacı olarak kullanmayı, belirli bir deneme eşiğini aşan mesajları ikinci bir kuyruğa (DLQ) yönlendirmeyi ve pgmq.metrics() üzerinden takılan mesajları izlemeyi anlatıyor. Sunulan SQL fonksiyonu, pgmq.read() çağrısını sararak zehirli mesajları otomatik olarak DLQ'ya aktarıyor ve yalnızca service_role'e çalıştırma izni veriyor.
Redis+BullMQ veya SQS gibi ayrı bir kuyruk servisi kurmak yerine mesajları aynı Postgres veritabanında tutmak, işlem içinde enqueue yapabilme ve tek bir migration dosyasıyla dağıtım gibi avantajlar sağlıyor. Ancak bu yaklaşımın bedeli, yönetilen bir kuyruk servisinin sunduğu operasyonel kolaylıkların (retry limiti, DLQ, alerting) manuel olarak inşa edilmesi gerekliliği. Postgres tabanlı arka plan işleri kuran mühendisler için bu makale, üretimde karşılaşılacak beş temel hata modunu ve çözümlerini uçtan uca test edilmiş kodlarla sunuyor.