Message Queue Genel Bakış¶
Giriş¶
Message Queue (Mesaj Kuyruğu), uygulamalar arasında asenkron iletişim sağlayan bir sistemdir. Bu sistem, uygulamaların birbirleriyle gevşek bağlı (loosely coupled) bir şekilde iletişim kurmasını sağlar.
Message Queue Nedir?¶
Message Queue, mesajların gönderildiği ve alındığı bir ara katmandır. Bu sistem: - Asenkron iletişim sağlar - Uygulamalar arası bağımlılığı azaltır - Ölçeklenebilirlik sağlar - Hata toleransı sunar - Yük dengeleme yapar
Message Queue Kullanım Senaryoları¶
- Asenkron İşlemler
- Uzun süren işlemler
- Arka plan görevleri
-
Bildirim gönderimi
-
Mikroservis İletişimi
- Servisler arası iletişim
- Event-driven mimari
-
Servis entegrasyonu
-
Yük Dengeleme
- İş yükü dağıtımı
- Trafik yönetimi
-
Kaynak optimizasyonu
-
Hata Toleransı
- Sistem kesintilerinde veri kaybını önleme
- Yeniden deneme mekanizmaları
- Veri tutarlılığı
Popüler Message Queue Sistemleri¶
- RabbitMQ
- Açık kaynak
- AMQP protokolü
- Kolay kurulum ve yönetim
-
.NET entegrasyonu
-
Apache Kafka
- Yüksek performans
- Dağıtık sistem
- Event streaming
- Büyük veri işleme
Message Queue Seçim Kriterleri¶
- Performans
- Mesaj işleme hızı
- Gecikme süresi
-
Ölçeklenebilirlik
-
Güvenilirlik
- Veri kaybı riski
- Hata toleransı
-
Yeniden deneme mekanizmaları
-
Özellikler
- Protokol desteği
- Yönetim araçları
- Monitoring
-
Güvenlik
-
Entegrasyon
- .NET desteği
- API kalitesi
- Dokümantasyon
- Topluluk desteği
Message Queue Best Practices¶
- Mesaj Tasarımı
- Anlamlı mesaj yapısı
- Versiyonlama
-
Serileştirme formatı
-
Hata Yönetimi
- Retry mekanizmaları
- Dead letter queue
-
Hata loglama
-
Performans Optimizasyonu
- Batch işlemler
- Mesaj boyutu
-
Queue yapılandırması
-
Monitoring
- Queue durumu
- Performans metrikleri
- Hata takibi
Mülakat Soruları¶
Temel Sorular¶
- Message Queue nedir ve neden kullanılır?
-
Cevap: Message Queue, uygulamalar arasında asenkron iletişim sağlayan bir sistemdir. Kullanım nedenleri:
- Asenkron işlemler
- Uygulama bağımsızlığı
- Ölçeklenebilirlik
- Hata toleransı
- Yük dengeleme
-
Message Queue sistemlerinin temel bileşenleri nelerdir?
-
Cevap:
- Producer (Üretici)
- Consumer (Tüketici)
- Queue (Kuyruk)
- Exchange (Değişim)
- Routing Key (Yönlendirme Anahtarı)
- Message (Mesaj)
-
Message Queue sistemlerinde hangi protokoller kullanılır?
-
Cevap:
- AMQP (Advanced Message Queuing Protocol)
- MQTT (Message Queuing Telemetry Transport)
- STOMP (Streaming Text Oriented Messaging Protocol)
- HTTP/HTTPS
- WebSocket
-
Message Queue sistemlerinde mesaj garantisi nasıl sağlanır?
-
Cevap:
- ACK (Acknowledgment) mekanizması
- Persistence (Kalıcılık)
- Transaction desteği
- Retry mekanizması
- Dead letter queue
-
Message Queue sistemlerinde yük dengeleme nasıl yapılır?
- Cevap:
- Round-robin dağıtım
- Work queue pattern
- Consumer grupları
- Queue partitioning
- Load balancing algoritmaları
Teknik Sorular¶
- RabbitMQ'da Exchange tipleri nelerdir?
-
Cevap:
- Direct Exchange
- Fanout Exchange
- Topic Exchange
- Headers Exchange
-
Kafka'da Partition ve Replication kavramları nedir?
-
Cevap:
- Partition: Topic'in parçalara bölünmesi
- Replication: Partition'ların kopyalanması
- Leader/Follower yapısı
- ISR (In-Sync Replicas)
-
Message Queue sistemlerinde mesaj serileştirme nasıl yapılır?
-
Cevap:
- JSON
- XML
- Protocol Buffers
- Avro
- MessagePack
-
Message Queue sistemlerinde monitoring nasıl yapılır?
-
Cevap:
- Queue metrikleri
- Consumer metrikleri
- Producer metrikleri
- Hata oranları
- Gecikme süreleri
-
Message Queue sistemlerinde güvenlik nasıl sağlanır?
- Cevap:
- SSL/TLS
- Authentication
- Authorization
- ACL (Access Control List)
- Network izolasyonu
Pratik Sorular¶
- RabbitMQ'da basit bir producer ve consumer nasıl oluşturulur?
-
Cevap:
// Producer using var connection = factory.CreateConnection(); using var channel = connection.CreateModel(); channel.QueueDeclare(queue: "hello", durable: false, exclusive: false, autoDelete: false, arguments: null); var message = "Hello World!"; var body = Encoding.UTF8.GetBytes(message); channel.BasicPublish(exchange: "", routingKey: "hello", basicProperties: null, body: body); // Consumer var factory = new ConnectionFactory() { HostName = "localhost" }; using var connection = factory.CreateConnection(); using var channel = connection.CreateModel(); channel.QueueDeclare(queue: "hello", durable: false, exclusive: false, autoDelete: false, arguments: null); var consumer = new EventingBasicConsumer(channel); consumer.Received += (model, ea) => { var body = ea.Body.ToArray(); var message = Encoding.UTF8.GetString(body); Console.WriteLine($"Received: {message}"); }; channel.BasicConsume(queue: "hello", autoAck: true, consumer: consumer);
-
Kafka'da basit bir producer ve consumer nasıl oluşturulur?
- Cevap:
// Producer var config = new ProducerConfig { BootstrapServers = "localhost:9092" }; using var producer = new ProducerBuilder<Null, string>(config).Build(); var message = new Message<Null, string> { Value = "Hello World!" }; await producer.ProduceAsync("test-topic", message); // Consumer var config = new ConsumerConfig { BootstrapServers = "localhost:9092", GroupId = "test-group", AutoOffsetReset = AutoOffsetReset.Earliest }; using var consumer = new ConsumerBuilder<Ignore, string>(config).Build(); consumer.Subscribe("test-topic"); while (true) { var result = consumer.Consume(); Console.WriteLine($"Received: {result.Message.Value}"); }
İleri Seviye Sorular¶
- Message Queue sistemlerinde CAP teoremi nasıl uygulanır?
-
Cevap:
- Consistency (Tutarlılık)
- Availability (Erişilebilirlik)
- Partition Tolerance (Bölünme Toleransı)
- Trade-off'lar
- Sistem seçimi
-
Message Queue sistemlerinde ölçeklendirme stratejileri nelerdir?
-
Cevap:
- Horizontal scaling
- Vertical scaling
- Sharding
- Partitioning
- Load balancing
-
Message Queue sistemlerinde veri kaybı nasıl önlenir?
-
Cevap:
- Persistence
- Replication
- ACK mekanizması
- Transaction
- Backup stratejileri
-
Message Queue sistemlerinde performans optimizasyonu nasıl yapılır?
-
Cevap:
- Batch processing
- Compression
- Caching
- Queue tuning
- Network optimizasyonu
-
Message Queue sistemlerinde monitoring ve alerting nasıl yapılır?
- Cevap:
- Metrik toplama
- Logging
- Alerting kuralları
- Dashboard
- Trend analizi