Türkçe production reference
RabbitMQ Geliştirici El Kitabı
RabbitMQ ile mesajlaşma, güvenilir teslimat, ölçekleme, yüksek erişilebilirlik ve production operasyonları.
REHBER HAKKINDA
Kapsam ve production odağı
KAPSAMNeyi çözüyor?Exchange, queue ve consumer modelinden mesaj güvenilirliği, retry, prefetch, quorum queue, clustering, federation, .NET entegrasyonu, monitoring ve güvenliğe kadar mesajlaşma sistemini uçtan uca ele alır.
OKUYUCUKimler için?RabbitMQ öğrenen backend geliştiricileri, .NET mesajlaşma sistemleri geliştiren ekipler ve cluster güvenilirliği ile ölçeklemeden sorumlu platform ekipleri içindir.
PRODUCTIONTemel ilkelerİş verisi tutarlılığını outbox ile koruyun, consumer'ları idempotent tasarlayın, acknowledgement ve retry akışını kontrollü yönetin; queue depth, unacked mesaj ve node alarm metriklerini izleyin.
TEMEL
Temel Seviye
TEMELRabbitMQ Nedir & Ne Zaman KullanılırHemen çalışan bir şey görmek istiyorsan bu sıraya git:TEMELTemel KavramlarRabbitMQ Nedir ve Ne Zaman Kullanılır bölümünde mesaj kuyruğunun neden gerekli olduğunu gördük. Şimdi RabbitMQ'nun iç yapısına — bileşenlerine — bakalım.TEMELExchange TipleriExchange, mesajları queue'lara yönlendiren bileşendir — bir nevi "trafik polisi". Kendisi mesaj saklamaz; kurallara bakıp "bu mesaj şu queue'ya gitsin" der.TEMELQueue ÖzellikleriQueue (kuyruk), mesajların sırayla bekletildiği "dolap"tır — gelen mesajlar sıraya girer, consumer gelip sırayla alır (ilk giren ilk çıkar). RabbitMQ'da iki ana queue tipi vardır:
ORTA
Orta Seviye
ORTAMessage ReliabilityMesajın kaybolmaması için 4 katmanlı bir güvenlik zinciri kurman gerekir. Eksik olan her katman = potansiyel mesaj kaybı. Aşağıdaki şema tüm zinciri gösteriyor — sonra her adımı tek tek inceleyeceğiz.ORTADead Letter Exchange & Retry PatternsBir mesaj işlenemediğinde ne olur? Kaybolmasın istiyorsan bir "çöp değil, tekrar deneme" mekanizması lazım. Dead Letter Exchange (DLX) tam bunu yapar: başarısız mesajları ayrı bir queue'ya yönlendirir — oradan tekrar denenebilir, incelenebilir veya loglanabilir.ORTAPrefetch & Consumer ScalingBir queue'dan mesaj okurken iki kritik sorunun cevabını bilmeniz gerekir: her consumer'a aynı anda kaç mesaj gönderilecek (prefetch) ve kaç consumer çalışacak (scaling).ORTA.NET Entegrasyonu.NET'ten RabbitMQ'ya bağlanmanın iki yolu var:
İLERİ
İleri Seviye
İLERİClustering & Node DiscoveryTek bir RabbitMQ sunucusu çökürse ne olur? Cluster kurarak birden fazla sunucuyu tek bir sistem gibi çalıştırırsın — biri düşse diğerleri devam eder.İLERİQuorum Queues & High AvailabilityQuorum Queue, mesajların birden fazla sunucuda kopyalanarak saklandığı queue tipidir. Bir sunucu çökse bile mesajlar diğerlerinde durur — veri kaybı olmaz.İLERİHorizontal ScalingTek queue yetmediğinde sistemi nasıl büyütürsün? Sadece sunucu eklemek yetmez — çünkü her queue'nun tek bir "lider" node'u vardır. Gerçek çözüm: işi parçala (sharding) ve her parçaya ayrı consumer'lar bağla.İLERİFederation & Shovel (Multi-DC)Birden fazla datacenter'ın (İstanbul + Frankfurt gibi) birbiriyle mesaj paylaşması gerektiğinde ne yaparsın? RabbitMQ cluster'ı farklı şehirler arası çalışamaz (ağ gecikmesine dayanamaz).
UZMAN
Uzman Seviye
UZMANMonitoring & AlertingSistem çalışıyor ama sağlıklı mı? Queue'lar şişiyor mu, consumer'lar yetişiyor mu, disk doluyor mu? Bunları gerçek zamanlı izleme ve "şu olursa beni uyar" kuralları ile takip edersin.UZMANProduction Checklist & TroubleshootingProduction'a çıkmadan önce "unuttuğum bir şey var mı?" kontrol listesi ve sorun olduğunda "ne yapmalıyım?" rehberi. Sırasıyla: deploy öncesi hazırlık → çalışma anı izleme → sorun giderme → güncelleme stratejisi.UZMANAnti-Patterns & Common MistakesAşağıdaki hatalar production'da en sık karşılaşılan sorunlardır. Her birini "neden kötü" ve "ne yapmalı" şeklinde açıklıyoruz. Korkmana gerek yok — hepsinin basit çözümü var.UZMANTesting & VerificationRabbitMQ entegrasyonlarını test etmek "çalışıyor gibi görünüyor" ile "production'da kesin çalışır" arasındaki farktır. Testcontainers ile gerçek RabbitMQ instance'ı üzerinde integration test yapmak, mock'lardan çok daha güvenilirdir.