RabbitMQ: Güçlü Mesajlaşma Sistemi

Cengiz Akarsu
4 min readApr 23, 2024

--

RabbitMQ asenkron mesajlaşma için popüler bir açık kaynaklı mesaj aracıdır. Uygulamalar arasında güvenilir ve ölçeklenebilir bir şekilde iletişim kurmak için kullanılır. Banka işlemleri, e-ticaret platformları ve oyunlar gibi birçok farklı sektörde kullanılır.

RabbitMQ’nun Faydaları:

  • Asenkron iletişim: RabbitMQ, uygulamalar arasında asenkron iletişim kurmanızı sağlar. Bu, bir uygulamanın diğer bir uygulamadan gelen bir yanıt beklemeden işlemeye devam etmesine olanak tanır. Bu, performansı ve ölçeklenebilirliği artırabilir.
  • Mesaj dayanıklılığı: RabbitMQ, mesajları disk üzerinde depolar, bu da mesajların kaybolmasını veya bozulmasını önler.
  • Yüksek performans: RabbitMQ, çok sayıda mesaj işleyebilen yüksek performanslı bir mesaj aracıdır.
  • Esneklik: RabbitMQ, farklı mesaj türlerini ve teslimat modellerini destekler.
  • Ölçeklenebilirlik: RabbitMQ, yatay olarak ölçeklendirilebilir, bu da daha fazla mesaj işleyebilmeniz için daha fazla düğüm eklemenize olanak tanır.

RabbitMQ Nasıl Kurulur?

RabbitMQ’yu kurmak oldukça kolaydır. İki ana seçeneğiniz var:

  • Erlang/OTP ile kurulum: RabbitMQ’yu kaynaktan derleyerek ve Erlang/OTP platformu ile çalıştırarak kurabilirsiniz. Bu, size en fazla kontrol ve özelleştirme seçeneğini sunar.
  • Paketlenmiş dağıtımlar: RabbitMQ’nun önceden derlenmiş paketleri, Ubuntu, Debian ve Windows gibi birçok farklı platform için mevcuttur. Bu, kurulumu çok daha kolaylaştırır.

RabbitMQ Nasıl Konfigüre Edilir?

RabbitMQ, bir konfigürasyon dosyası aracılığıyla yapılandırılır. Bu dosya, sunucular, sıralar, değişimler ve bağlaçlar gibi RabbitMQ bileşenlerinin nasıl davranacağını tanımlar.

RabbitMQ’yu Kullanmaya Başlamak

RabbitMQ’yu kullanmaya başlamak için şu adımları izleyin:

  1. RabbitMQ’yu kurun.
  2. RabbitMQ konfigürasyon dosyasını düzenleyin.
  3. RabbitMQ sunucusunu başlatın.
  4. Bir mesajlaşma istemcisi kullanarak RabbitMQ ile iletişim kurun.

RabbitMQ’da Exchange Türleri ve Mesaj Yönlendirme

RabbitMQ, mesajları bir uygulamadan diğerine yönlendirmek için exchange (değişim) adlı bir bileşeni kullanır. Exchange’ler, mesajları belirli kurallara göre yönlendirerek karmaşık mesaj akışları oluşturmanıza olanak tanır.

Exchange Türleri: RabbitMQ’da üç ana exchange türü vardır:

  1. Direct Exchange:
  • Nasıl Çalışır: Direct exchange, mesajları routing key (yönlendirme anahtarı) adlı bir parametreye göre yönlendirir. Mesajın routing key’i, hangi kuyruğa gönderileceğini belirler.
  • Ne Zaman Kullanılır: Basit mesaj akışları için idealdir. Mesajlar tek bir kuyruğa gönderilmesi gerektiğinde direct exchange tercih edilir.
  • Örnek: Bir e-ticaret uygulamasında, siparişleri işleyen bir kuyruğa ve ödemeleri işleyen bir kuyruğa mesaj göndermek için direct exchange kullanılabilir.

2. Fanout Exchange:

  • Nasıl Çalışır: Fanout exchange, gelen tüm mesajları bağlı tüm kuyruklara yayınlar. Routing key’e bakılmaksızın tüm mesajlar tüm kuyruklara kopyalanır.
  • Ne Zaman Kullanılır: Bir mesajın birden fazla kuyruk tarafından işlenmesi gerektiğinde idealdir. Örneğin, bir güncelleme mesajının birden fazla uygulama tarafından alınması gerektiğinde fanout exchange kullanılabilir.
  • Örnek: Bir haber bülteni uygulamasında, haberleri işleyen birden fazla uygulamaya göndermek için fanout exchange kullanılabilir.

3. Topic Exchange:

  • Nasıl Çalışır: Topic exchange, mesajları topic pattern (konu paterni) adlı bir parametreye göre yönlendirir. Mesajın topic pattern’i, hangi kuyruklara gönderileceğini belirler. Topic pattern, wildcards (*) ve hash (#) gibi joker karakterleri destekler.
  • Ne Zaman Kullanılır: Karmaşık mesaj akışları için idealdir. Mesajlar birden fazla kuyruğa veya belirli kriterlere uyan kuyruklara gönderilmesi gerektiğinde topic exchange tercih edilir.
  • Örnek: Bir blog uygulamasında, belirli bir kategoriye veya etikete ait gönderileri işleyen birden fazla kuyruğa mesaj göndermek için topic exchange kullanılabilir.

Exchange Seçimi:

Uygulamanız için hangi exchange türünün en uygun olduğunu seçerken, mesaj akışınızın karmaşıklığını ve mesajların hangi kuyruklara gönderilmesi gerektiğini göz önünde bulundurmanız önemlidir.

RabbitMQ exchange’leri, mesajları belirli kurallara göre yönlendirerek karmaşık mesaj akışları oluşturmanıza olanak tanır. Direct, fanout ve topic exchange olmak üzere üç ana exchange türü vardır. Her exchange türünün kendine özgü çalışma şekli ve kullanım senaryoları vardır. Uygulamanız için hangi exchange türünün en uygun olduğunu seçerken, mesaj akışınızın karmaşıklığını ve mesajların hangi kuyruklara gönderilmesi gerektiğini göz önünde bulundurmanız önemlidir. (Topicler üzerinde, WildCard desteği ile # ve .* kullanılarak topic filtreleme/yönetilebilir.)

RabbitMQ’yu Öğrenmek

RabbitMQ’yu öğrenmenin en iyi yolu resmi belgelerini okumaktır: https://www.rabbitmq.com/docs. Ayrıca, RabbitMQ ile ilgili birçok çevrimiçi eğitim ve kaynak da mevcuttur.

Bunlardan en derli toplusu: https://www.rabbitmq.com/tutorials

Ez cümle;

RabbitMQ, asenkron mesajlaşma için güçlü ve esnek bir araçtır. Birçok farklı sektörde kullanılır ve performansı, ölçeklenebilirliği ve güvenilirliği ile tanınır. RabbitMQ’yu kullanmayı düşünüyorsanız, kurulumu ve kullanımı nispeten kolaydır.

Herkese mutlu kodlamalar dilerim!

Güç Sizinle Olsun…🚀

--

--