# Pub/Sub (Yayın-Abonelik (Publish-Subscribe))

Adres: https://softwaredictionary.org/tr/terimler/pub-sub
Kategori: Backend ve API'ler
Son güncelleme: 2026-09-30
Okunuşu: pab sab

Kısaca: Pub/sub, yayıncıların konulara mesaj gönderdiği ve bir konunun her abonesinin, iki taraf da birbirini tanımadan bir kopya aldığı bir mesajlaşma kalıbıdır.

## Pub/sub nedir?

Yayın-abonelik kalıbında yayıncı (publisher) adı verilen göndericiler mesajları belirli alıcılara göndermez. Bunun yerine her mesajı `order.placed` gibi bir konuya (topic; kanal da denir) yayımlar ve bir mesaj aracısı, o konuyla ilgilendiğini kaydeden her aboneye bir kopya teslim eder. Yayıncılar abonelerin kim olduğunu ya da kaç tane olduğunu bilmez, aboneler de kimin yayımladığını bilmez.

Bir çevrimiçi mağaza `order.placed` yayımladığında, e-posta servisi bir makbuz gönderir, envanter servisi stok ayırır ve analitik servisi satışı kaydeder; her biri bağımsız bir abonedir. Sadakat puanı servisi gibi yeni bir özellik eklemek, yayıncıyı hiç değiştirmeden bir abone daha eklemek demektir. Pub/sub; Redis, RabbitMQ, NATS, IoT cihazları için MQTT aracıları, Apache Kafka ve bulut sağlayıcılarının yönetilen mesajlaşma servisleri gibi aracılar ve platformlar tarafından sunulur.

Pub/sub bir dergi aboneliği gibi çalışır: yayıncı bir sayı çıkarır, abone olan herkes kendi kopyasını alır ve abone olmayanlar hiçbir şey almaz. Teslimat garantileri sistemler arasında çok değişir. Bazıları ateşle-ve-unut şeklindedir; çevrimdışı bir abone mesajı kaçırır. Diğerleri ise mesajları kalıcı olarak saklar, böylece aboneler döndüklerinde yetişebilir.

Pub/sub sıklıkla mesaj kuyruğu ve observer kalıbıyla karıştırılır. Mesaj kuyruğunda her mesaj tam olarak bir tüketici tarafından işlenir; bu, işi worker'lar arasında paylaştırmak için idealdir. Pub/sub ise her mesajı her aboneye teslim eder; birçok sistem ikisini birleştirir ve bir konu, abone olan servis başına bir kuyruğa dağılır. Observer kalıbı aynı fikrin süreç içi sürümüdür; nesneler tek bir program içinde başka bir nesnenin olaylarına abone olur. Pub/sub ise ortaya bir aracı koyar ve genellikle ağı aşar.

## Önemli noktalar

- Yayıncılar konulara mesaj gönderir ve bir konunun her abonesi bir kopya alır.
- Yayıncılar ve aboneler birbirini bilmez; bu da servisleri gevşek bağlı tutar.
- Yayıncıyı değiştirmeden yeni aboneler eklenebilir.
- Teslimat garantileri değişir: bazı sistemler çevrimdışı aboneler için mesajları bırakır, bazıları saklar.
- Kuyruk her mesajı bir tüketiciye gönderir; pub/sub ise tüm abonelere.

## Örnek: Redis ile yayınlamak ve abone olmak

```javascript
// Pub/sub with Redis, using the node-redis client
import { createClient } from "redis";

const publisher = createClient();
const subscriber = publisher.duplicate();
await Promise.all([publisher.connect(), subscriber.connect()]);

// Every service that subscribes to the channel gets its own copy
await subscriber.subscribe("order.placed", (message) => {
  const order = JSON.parse(message);
  console.log("Send receipt for order", order.id);
});

// The publisher doesn't know or care who is listening
await publisher.publish("order.placed", JSON.stringify({ id: 1001, total: 59.9 }));
```

## Sık sorulan sorular

**Pub/sub ile mesaj kuyruğu arasındaki fark nedir?**

Mesaj kuyruğunda her mesaj bir tüketiciye gider; bu yüzden birkaç worker yükü paylaşabilir. Pub/sub'da ise her abone her mesajın kendi kopyasını alır; bu yüzden birkaç farklı servis aynı olaya tepki verebilir.

**Kafka pub/sub midir?**

Kafka pub/sub'ı destekler, çünkü birçok tüketici grubu aynı konuyu bağımsız olarak okuyabilir. Tek bir tüketici grubu içinde her bölüm (partition) yalnızca bir tüketici tarafından okunur; bu yüzden Kafka işi paylaştırmak için kuyruk gibi de davranabilir.

**Bir abone çevrimdışıyken mesajlara ne olur?**

Sisteme bağlıdır. Ateşle-ve-unut sistemler mesajı o abone için bırakır; kalıcı sistemler ise abone onaylayana ya da saklama süresi dolana kadar mesajı tutar.

---

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