# RabbitMQ

Adres: https://softwaredictionary.org/tr/terimler/rabbitmq
Kategori: Backend ve API'ler
Son güncelleme: 2026-10-03
Okunuşu: rebit em kyu

Kısaca: RabbitMQ, üreticilerin mesajlarını exchange'ler üzerinden kuyruklara yönlendiren açık kaynaklı mesaj aracısıdır; tüketiciler onları alıp işi bitince onaylar.

## RabbitMQ nedir?

RabbitMQ ilk olarak 2007'de yayımlandı ve güvenilir, uzun süre çalışan sistemler için tasarlanmış bir dil olan Erlang ile yazılmıştır. Bir mesaj aracısıdır (message broker): bir uygulamanın parçaları arasında duran, üreticilerden mesaj kabul eden ve tüketiciler hazır olana kadar onları kuyruklarda tutan bir sunucu. AMQP protokolünün yanı sıra MQTT ve STOMP'u da konuşur ve neredeyse her dil için istemcisi vardır.

Üreticiler doğrudan kuyruklara yazmaz. Her mesajı bir exchange'e gönderir; exchange de mesajın nereye gideceğine bağlantılara (binding) bakarak karar verir: direct exchange bir yönlendirme anahtarını (routing key) birebir eşler, topic exchange `orders.*` gibi kalıpları eşler, fanout exchange de mesajı bağlı her kuyruğa kopyalar. Bu sayede bir görevi tek bir işçiye ya da bir olayı birçok servise göndermek kolaylaşır.

Tüketiciler her mesajı işledikten sonra onaylar (acknowledge). Bir işçi onaylamadan çökerse RabbitMQ mesajı başka bir işçiye verir; böylece iş kaybolmaz. Kuyruklar kalıcı (durable) yapılabilir ve mesajlar yeniden başlatmadan sonra da kalır; başarısız mesajlar bir dead-letter kuyruğuna gönderilebilir, prefetch sınırları da meşgul tek bir işçinin her şeyi kapmasını engeller.

Sık yapılan bir yanlış, RabbitMQ ile Kafka'nın aynı işi yaptığı düşüncesidir. RabbitMQ tek tek mesajları yönlendirip teslim etmek üzerine kuruludur ve onaylanan mesajlar silinir; Kafka ise olayların yeniden oynatılabilen bir log'unu tutar. Arka plan işleri ve görev kuyrukları için RabbitMQ çoğu zaman daha basit seçimdir.

## Önemli noktalar

- RabbitMQ, Erlang ile yazılmış açık kaynaklı bir mesaj aracısıdır.
- Üreticiler exchange'lere gönderir; exchange'ler mesajları bağlantılara göre kuyruklara yönlendirir.
- Direct, topic ve fanout exchange'ler bire bir ve bire çok teslimatı karşılar.
- Tüketiciler mesajları onaylar; bitmemiş iş yeniden teslim edilir.
- Onaylanan mesajlar silinir; Kafka'nın yeniden oynatılabilen log'undan farkı budur.

## Örnek: Bir kuyruğa görev göndermek (pika ile Python)

```python
import pika

connection = pika.BlockingConnection(pika.ConnectionParameters("localhost"))
channel = connection.channel()

# A durable queue survives a broker restart
channel.queue_declare(queue="emails", durable=True)

channel.basic_publish(
    exchange="",            # the default exchange routes by queue name
    routing_key="emails",
    body='{"to": "ada@example.com"}',
    properties=pika.BasicProperties(delivery_mode=2),  # persist the message
)
connection.close()
```

## Sık sorulan sorular

**AMQP nedir?**

Advanced Message Queuing Protocol, mesaj aracıları için açık bir standarttır. Exchange'leri, kuyrukları ve bağlantıları tanımlar; RabbitMQ onun en bilinen uygulamasıdır.

**RabbitMQ ile Kafka arasındaki fark nedir?**

RabbitMQ tek tek mesajları kuyruklara yönlendirir ve onaylandıklarında siler; bu da görev kuyruklarına uyar. Kafka ise olayları birçok tüketicinin okuyup yeniden oynatabileceği kalıcı bir log'da saklar; bu da olay akışına uyar.

**Dead-letter kuyruğu nedir?**

Reddedilen, süresi dolan ya da çok kez başarısız olan mesajları toplayan bir kuyruktur; böylece bu mesajlar kaybolmak yerine sonradan incelenebilir ya da yeniden denenebilir.

---

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