PHP (Laravel) İleri Seviye Asenkron & Kuyruk

Laravel Queues, Redis Horizon & Job Idempotency

E-posta, SMS, PDF üretimi gibi ağır işleri arka plandaki işçilere (workers) devretmektir.

5 Yaşındaki Çocuğa Anlatır Gibi (Analoji)

Bankada sıra numarası alıp bekleme salonuna geçmektir. Gişe memuru (Worker) sıranız geldiğinde işlemi tamamlar; siz kapıda bekletilmezsiniz.

Teknik & Mimari Tanım

Laravel Queue sistemi, HTTP request-response döngüsünü geciktirmemek için ağır işleri Redis / SQS / Database kuyruğuna yazar. "At-least-once delivery" garantisi vardır. Ağ kesintisinde bir Job iki kez çalışabileceğinden Job'ların Idempotent (tekrar çalıştığında aynı sonucu veren) tasarlanması şarttır.

Mülakatta Ne Demelisin? (Kurtarıcı Altın Cevap)

“Kuyruklar kullanıcıyı bekletmemek ve asenkron işlem yapmak içindir. Redis en popüler driver'dır. Idempotency çok kritiktir: Eğer bir ödeme job'ı retry olursa karttan iki kez para çekmemek için benzersiz bir idempotent key (transactionId) ile kontrol yapılmalıdır.”

PHP (Laravel) Örnek Uygulaması
class SendInvoiceJob implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
    public $tries = 3;
    public $backoff = 60;

    public function handle(): void {
        // Idempotent kontrol
        if ($this->invoice->is_processed) return;
        $this->invoice->markAsProcessed();
    }
}
Mülakat Tuzağı & Adayların En Sık Yaptığı Hata:

Job içine devasa nesneler koymak yerine ID geçip handle() içinde taze modeli veritabanından çekmemek.