data-infra

Mesaj Kuyruğu (Message Queue)

Mesaj kuyruğu, mesajları (iş veya veri birimlerini) bir worker süreç işlemeye hazır olana kadar sıralı bir tampon içinde tutarak, bir iş parçasının üreticisini (producer) o işi nihayetinde gerçekleştiren tüketiciden (consumer) ayıran bir altyapı parçasıdır. Servis A'nın Servis B'yi doğrudan çağırıp bir yanıt beklemesi yerine (senkron, sıkı bağlı ve B yavaş veya kapalıysa kırılgan), Servis A bir mesajı bir kuyruğa yayınlar ve hemen devam eder; Servis B (veya bir worker süreç filosu), kuyruktan mesajları kendi hızında tüketir. AI/SaaS kurucuları için neden önemli: AI iş yükleri sıklıkla yavaş ve süre olarak değişkendir - bir görsel üretmek 5 saniye sürebilir, bir saatlik sesi deşifre etmek bir dakika sürebilir, 10.000 doküman üzerinde toplu bir embedding işi çalıştırmak çok daha uzun sürebilir - ve bunların hiçbiri, duyarlı hissetmek için bir saniyenin çok altında dönmesi gereken bir web isteğinin istek/yanıt döngüsüne ait değildir. Kuyruklar, bir ürünün bir isteği anında kabul etmesini ("videonuz işleniyor"), kontrolü kullanıcıya geri döndürmesini ve gerçek AI işini arka planda tamamlayıp bittiğinde kullanıcıyı webhook, polling ya da websocket ile güncellemesini sağlayan şeydir. Nasıl çalışır: bir producer, adlandırılmış bir kuyruğa veya konuya (topic) bir mesaj yayınlar (genellikle JSON); bir veya daha fazla consumer worker mesajları çeker ve işler, genellikle başarılı işlemeyi onaylayarak mesajın kaldırılmasını sağlar (ya da başarısızlıkta mesaj yeniden deneme için tekrar görünür hale gelir, ya da N başarısız denemeden sonra tek bir zehirli mesajın tüm boru hattını sonsuza kadar bloke etmemesi için bir dead-letter kuyruğuna taşınır). Popüler uygulamalar, daha basit iş yükleri için Redis tabanlı iş kuyruklarından (Node için BullMQ, PHP için Laravel Horizon/Redis kuyrukları, Ruby için Sidekiq) RabbitMQ gibi özel broker'lara ve yüksek verimli veya çoklu tüketici fan-out senaryoları için Kafka veya AWS SQS/SNS gibi dağıtık log tabanlı sistemlere kadar uzanır. Somut örnek: bir kullanıcı, AI transkripsiyon SaaS'ına 45 dakikalık bir podcast bölümü yükler. Yükleme uç noktası dosyayı kaydeder, `{job: "transcribe", file_id: "f_9921", user_id: "u_44"}` mesajını bir `transcription-jobs` kuyruğuna yayınlar ve tarayıcıya hemen `202 Accepted` döndürür. Web sunucularından bağımsız ölçeklenen bir worker süreç havuzu, kuyruktan işleri çeker, bir konuşmadan metne API'sini çağırır, transkripti veritabanına yazar ve arayüzü gerçek zamanlı güncellemek için frontend'e bir webhook tetikler - yani yüklemeyi işleyen web sunucusu, gerçek transkripsiyonun sürdüğü 3 dakika boyunca hiçbir zaman bloke olmamıştır.

İlgili terimler

Daha fazla Veri ve Altyapı terimi