# Mesaj Kuyruğu

Adres: https://softwaredictionary.org/tr/terimler/message-queue
Kategori: Backend ve API'ler
Son güncelleme: 2026-09-30
İngilizcesi: Message Queue
Okunuşu: mesic kyu

Kısaca: Mesaj kuyruğu, bir servisten gelen mesajları bir başkası işlemeye hazır olana kadar saklayan ve sistemin parçalarını eşzamansız çalıştıran bir bileşendir.

## Mesaj kuyruğu (message queue) nedir?

Mesaj kuyruğu, bir sistemin bir parçasının (üretici, producer), mesajı işleyen parçayı (tüketici, consumer) beklemeden mesaj göndermesini sağlar. Kuyruk her mesajı, bir tüketici onu alıp işleyene ve onaylayana kadar güvenle saklar; ardından mesaj kaldırılır. Mesajlar genellikle bir görevi ya da olayı tanımlayan JSON gibi küçük veri parçalarıdır.

Bu, sistemi eşzamansız ve gevşek bağlı hale getirir: üretici ile tüketicinin aynı anda ya da aynı hızda çalışması gerekmez. Aniden bir sipariş yoğunluğu geldiğinde mesajlar kuyrukta bekler, worker'lar onları sabit bir hızda işler ve daha hızlı olmak için daha fazla worker ekleyebilirsiniz. Popüler araçlar arasında RabbitMQ, Amazon SQS, Redis tabanlı iş kuyrukları ve teknik olarak dağıtık bir log olan ancak çoğunlukla benzer işler için kullanılan Apache Kafka bulunur.

Restoran mutfağındaki sipariş rayını düşünün: garsonlar fişleri raya iliştirip masalarına döner, aşçılar da müsait oldukça fişleri tek tek alır. Mesaj kuyrukları genellikle e-posta göndermek, görüntü ve video işlemek, ödemeleri yürütmek ve mikroservisler arasında olay iletmek için kullanılır.

Çoğu kuyruk en az bir kez (at-least-once) teslimat garantisi verir; yani bir tüketici onaylamadan önce çökerse bir mesaj ara sıra iki kez gelebilir. Bu nedenle tüketiciler idempotent olmalıdır; yani aynı mesajı iki kez işlemek bir kez işlemekle aynı etkiyi yaratmalıdır. Sürekli başarısız olan mesajlar ise incelenmek üzere genellikle bir dead-letter kuyruğuna taşınır. Kuyruk, yayın-abonelik (pub/sub) modelinden de farklıdır: kuyrukta her mesaj tek bir tüketici tarafından işlenirken pub/sub her abonenin mesajın bir kopyasını almasını sağlar.

## Önemli noktalar

- Üreticiler mesaj gönderir; tüketiciler bunları sonra, kendi hızlarında işler.
- Kuyruk, servisleri birbirinden ayırır ve trafik artışlarını emer.
- Tüketiciler mesajları işledikten sonra onaylar; böylece çökerlerse iş kaybolmaz.
- En az bir kez teslimat, mesaj işleyicilerin idempotent olması gerektiği anlamına gelir.
- Kuyrukta her mesaj tek bir tüketiciye gider; pub/sub'da her abone bir kopya alır.

## Örnek: RabbitMQ ile iş üretmek ve tüketmek

```javascript
// RabbitMQ via the amqplib package
const channel = await connection.createChannel();
await channel.assertQueue("emails", { durable: true });

// Producer: put a job on the queue and move on without waiting
const job = { to: "ada@example.com", template: "welcome" };
channel.sendToQueue("emails", Buffer.from(JSON.stringify(job)), { persistent: true });

// Consumer: take one job at a time and acknowledge it when done
await channel.prefetch(1);
await channel.consume("emails", async (msg) => {
  const task = JSON.parse(msg.content.toString());
  await sendEmail(task.to, task.template);
  channel.ack(msg); // only now is the message removed from the queue
});
```

## Sık sorulan sorular

**Mesaj kuyruğu ile mesaj aracısı (message broker) arasındaki fark nedir?**

Mesaj aracısı, mesajları alan, saklayan ve yönlendiren RabbitMQ gibi sunucu yazılımıdır. Mesaj kuyruğu ise bir aracının yönettiği yapılardan biridir; yine de insanlar bu iki terimi sıklıkla birbirinin yerine kullanır.

**Kafka bir mesaj kuyruğu mudur?**

Kafka öncelikle, mesajları teslimattan sonra silmek yerine sıralı ve yeniden oynatılabilir bir logda tutan dağıtık bir olay akışı (event streaming) platformudur. Sıklıkla mesaj kuyruğuyla aynı işler için kullanılır, ancak tüketiciler kendi konumlarını izler ve birçok bağımsız tüketici grubu aynı veriyi okuyabilir.

**Bir servisi doğrudan çağırmak yerine neden mesaj kuyruğu kullanılır?**

Kuyruk, çağıranın yavaş işi beklemek yerine hemen yanıt vermesini sağlar, alıcı servis kapalıyken mesajları güvende tutar ve trafik artışlarını yumuşatır. Bedeli ise ek altyapı ile gecikmeleri ve yinelenen mesajları yönetme ihtiyacıdır.

---

Software Dictionary: https://softwaredictionary.org/tr · https://softwaredictionary.org/tr/llms.txt
