Skip to main content
Altyapı

Message Queue: RabbitMQ vs Kafka Karşılaştırması

Mart 15, 2026 3 dk okuma 12 views Raw
Mesaj kuyruğu mimarisi RabbitMQ ve Kafka karşılaştırması
İçindekiler

Message Queue Nedir?

Message queue (mesaj kuyruğu), dağıtık sistemlerde servisler arasında asenkron iletişim sağlayan bir yazılım mimarisi bileşenidir. Üretici (producer) servislerin mesajları kuyruğa göndermesi ve tüketici (consumer) servislerin bu mesajları işlemesi prensibine dayanır. Bu yaklaşım, servisleri birbirinden bağımsız hale getirerek ölçeklenebilirlik ve güvenilirlik sağlar.

RabbitMQ Nedir?

RabbitMQ, AMQP (Advanced Message Queuing Protocol) tabanlı açık kaynaklı bir mesaj aracısıdır (message broker). Erlang dili ile yazılmış olup, karmaşık yönlendirme senaryolarını destekleyen güçlü bir mesajlaşma sistemidir.

RabbitMQ'nun Temel Özellikleri

  • Esnek yönlendirme: Exchange türleri ile karmaşık mesaj yönlendirme
  • Protokol desteği: AMQP, MQTT, STOMP gibi birden fazla protokol
  • Mesaj onayı: Teslim garantisi ve mesaj kalıcılığı
  • Eklenti sistemi: Yönetim arayüzü, shovel, federation gibi eklentiler
  • Kümeleme: Yüksek erişilebilirlik için küme desteği

Apache Kafka Nedir?

Apache Kafka, LinkedIn tarafından geliştirilen ve Apache Software Foundation'a devredilen dağıtık bir olay akış platformudur. Log tabanlı mimarisi ile yüksek hacimli veri akışlarını işlemek için tasarlanmıştır. Kafka yalnızca bir mesaj kuyruğu değil, aynı zamanda bir olay depolama ve akış işleme platformudur.

Kafka'nın Temel Özellikleri

  • Yüksek throughput: Saniyede milyonlarca mesaj işleme kapasitesi
  • Mesaj kalıcılığı: Mesajlar disk üzerinde yapılandırılabilir süre boyunca saklanır
  • Partition tabanlı ölçekleme: Topic'ler partition'lara bölünerek paralel işleme
  • Consumer grupları: Mesajların tüketici grupları arasında dağıtılması
  • Kafka Streams: Gerçek zamanlı akış işleme kütüphanesi

RabbitMQ vs Kafka Karşılaştırması

ÖzellikRabbitMQKafka
MimariMesaj aracısı (broker)Dağıtık log sistemi
Mesaj tüketimiPush modeliPull modeli
Mesaj sıralamasıKuyruk bazındaPartition bazında
ThroughputOrta-yüksekÇok yüksek
Mesaj saklamaTüketilince silinirYapılandırılabilir süre saklanır
YönlendirmeKarmaşık kurallarTopic tabanlı
GecikmeÇok düşükDüşük

Kullanım Senaryoları

RabbitMQ İçin İdeal Senaryolar

  • Görev kuyruğu (task queue) ve iş dağıtımı
  • RPC (Remote Procedure Call) senaryoları
  • Karmaşık mesaj yönlendirme gereksinimleri
  • Düşük gecikmeli mesajlaşma
  • Mikroservisler arası iletişim

Kafka İçin İdeal Senaryolar

  • Olay kaynaklı mimari (event-driven architecture)
  • Gerçek zamanlı veri akışı işleme
  • Log toplama ve analiz
  • Büyük veri entegrasyonu
  • Olay kaynağı (event sourcing) deseni

Mimari Farklar

RabbitMQ, geleneksel mesaj aracısı modelini takip eder. Mesajlar exchange'lere gönderilir ve binding kurallarına göre kuyruklara yönlendirilir. Tüketildikten sonra mesajlar kuyruktan silinir. Kafka ise mesajları topic'lere yazar ve partition'larda sıralı olarak saklar. Tüketiciler offset bazında mesajları okur ve mesajlar yapılandırılabilir süre boyunca saklanır.

Ölçekleme Yaklaşımları

RabbitMQ yatay ölçekleme için kümeleme ve shovel eklentisini kullanır. Kafka ise partition sayısını artırarak doğal yatay ölçekleme sunar. Yüksek hacimli senaryolarda Kafka'nın partition tabanlı ölçekleme modeli belirgin avantaj sağlar.

Ekolsoft olarak dağıtık sistemlerde mesajlaşma altyapısı tasarlarken, projenin gereksinimlerini analiz ederek RabbitMQ veya Kafka arasında en uygun çözümü belirliyoruz.

Güvenilirlik ve Hata Toleransı

Her iki sistem de yüksek erişilebilirlik sunar. RabbitMQ mirrored queue'lar ve quorum queue'lar ile veri replikasyonu sağlar. Kafka ise partition replikasyonu ve ISR (In-Sync Replicas) mekanizması ile veri kaybını önler. Her iki durumda da doğru yapılandırma kritik önem taşır.

Performans Optimizasyonu

  1. Batch işleme: Kafka'da mesajları gruplar halinde göndererek throughput artırın
  2. Prefetch ayarı: RabbitMQ'da tüketici prefetch değerini optimize edin
  3. Sıkıştırma: Büyük mesajlarda sıkıştırma algoritmaları kullanın
  4. Partition stratejisi: Kafka'da partition sayısını iş yüküne göre ayarlayın

Sonuç

RabbitMQ ve Kafka, farklı ihtiyaçlara cevap veren güçlü mesajlaşma sistemleridir. RabbitMQ, esnek yönlendirme ve düşük gecikme gerektiren senaryolarda öne çıkarken, Kafka yüksek hacimli veri akışları ve olay güdümlü mimarilerde üstünlük sağlar. Doğru seçim, projenizin özel gereksinimlerine bağlıdır.

Bu yazıyı paylaş