# Mesaj Kuyruğu vs Pub/Sub

Adres: https://softwaredictionary.org/tr/karsilastirma/message-queue-vs-pub-sub
Son güncelleme: 2026-10-02

Kısaca: Mesaj kuyruğunda her mesaj tek bir tüketiciye gider, işçiler yükü paylaşır; pub/sub'da ise her mesaj her aboneye kopyalanır, böylece birçok servis tepki verir.

## Mesaj kuyruğu ile pub/sub arasındaki fark nedir?

İkisi de servislerin birbirini doğrudan çağırmak yerine bir aracı (broker) üzerinden asenkron konuşmasını sağlar: üretici bir mesaj gönderip yoluna devam eder, tüketiciler de fırsat bulduklarında onu işler. Mesaj kuyruğunda mesajlar sırada bekler ve her birini tek bir tüketici alıp işler. Yayınla/abone ol (publish/subscribe) modelinde ise yayıncı mesajı bir konuya (topic) gönderir ve o konunun her abonesi kendi kopyasını alır.

Fark, tek alıcıya karşı çok alıcıdır. Kuyruk işi paylaştırır: aynı kuyruğu okuyan on işçi, resim boyutlandırmak ya da e-posta göndermek gibi farklı işleri alır; işçi eklemek de işlem kapasitesini artırır. Pub/sub ise olguları yayar: bir sipariş verildiğinde faturalama, kargo ve analitik, sipariş servisi onların varlığından haberdar olmadan her biri kendi tepkisini verebilir.

Gerçek sistemler çoğu zaman ikisini birleştirir. RabbitMQ'da, SQS'i besleyen Amazon SNS'te ya da Google Cloud Pub/Sub'da bir konu, abone olan her servis için bir kuyruğa dağıtılabilir; o kuyruğu da servisin işçileri paylaşır. Kafka ikisini de konular ve tüketici grupları (consumer group) ile karşılar: her grup her mesajı görür, bir grubun içinde ise her mesaj tek bir üyeye gider.

Sık yapılan bir yanlış, pub/sub'ın mesajları herkes okuyana kadar her zaman sakladığı düşüncesidir. Klasik pub/sub'da çevrimdışı olan bir abone, sistem kalıcı abonelikler ya da her abonenin arkasına bir kuyruk eklemedikçe mesajları basitçe kaçırır; kuyrukta ise mesajlar bir tüketici işlediğini onaylayana kadar bekler.

| Özellik | Mesaj Kuyruğu | Pub/Sub |
| --- | --- | --- |
| Mesajı kim alır | Tam olarak bir tüketici | Her abone bir kopya alır |
| Asıl amaç | İşi işçiler arasında paylaştırmak | Olayları birçok servise yaymak |
| Tüketici eklemek | Aynı işi daha çok işçiye yayar | Her olayı duyan bir servis daha ekler |
| Tüketici çevrimdışıyken | Mesajlar kuyrukta bekler | Aboneliği kalıcı değilse mesajları kaçırabilir |
| Bağımlılık | Üretici, işi hangi kuyruğun yaptığını bilir | Yayıncı kimin dinlediğini bilmez |
| Örnekler | RabbitMQ kuyrukları, Amazon SQS, Sidekiq gibi iş kuyrukları | Kafka konuları, Redis Pub/Sub, Amazon SNS, Google Cloud Pub/Sub |

## Mesaj Kuyruğu şu durumlarda doğru seçim

- Her görev tam olarak bir kez yapılmalı; bir e-posta göndermek ya da bir kartı tahsil etmek gibi.
- Ağır işi bir işçi havuzuna yaymak istiyorsunuz.
- Mesajlar bir işçi boşalana kadar güvenle beklemeli.

## Pub/Sub şu durumlarda doğru seçim

- Birbirinden bağımsız birkaç servisin aynı olaya tepki vermesi gerekiyor.
- Üreticiyi değiştirmeden yeni tüketiciler eklemek istiyorsunuz.
- Fiyat güncellemeleri ya da bildirimler gibi değişiklikleri yayıyorsunuz.

## Sık sorulan sorular

**Kafka bir mesaj kuyruğu mu, pub/sub mı?**

Kafka, ikisi gibi de davranabilen bir olay akışı (event streaming) platformudur. Her tüketici grubu her mesajı okur, bu pub/sub'a benzer; bir grubun üyeleri ise mesajları kendi aralarında paylaşır, bu da kuyruğa benzer.

**Bir mesaj kuyruğunun birden çok tüketicisi olabilir mi?**

Evet, ama yarışırlar: her mesaj yine yalnızca birine gider. Kuyruk işi birçok işçiye böyle yayar.

**Mikroservislere hangisi uyar?**

İkisi de kullanılır. Kuyruklar bir kez çalışması gereken komutlara ve arka plan işlerine, pub/sub ise birkaç servisin ilgilendiği olaylara uyar. Birçok sistem, servis başına bir kuyruğu besleyen pub/sub konuları kullanır.

---

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