RabbitMQ Nedir? Ne Amaca Hizmet Etmektedir?

Merhaba,

Bu içeriğimizde bir mesaj kuyruk sistemi olan RabbitMQ üzerine detaylı bir irdeleme gerçekleştirecek ve nerede ne amaçla kullanmamız gerektiğine dair istişaremizi edeceğiz.

Nedir bu RabbitMQ?
Open Source olan bir mesaj kuyruk sistemidir. Yani bir uygulamadan bir mesajı alıp bir başka uygulamaya sırası geldiğinde ileten sistemdir. Bu sistemi bir postane yahut kargo firması gibi düşünebiliriz. Nasıl ki bir mektup postaneye yahut bir ürün kargoya verildiğinde zamanı geldimi ilgili adrese teslim edilirlerse işte aynı işlemi RabbitMQ’da gerçekleştirmekte ve kendisine verilen mesajı doğru zamanda ilgili tüketiciye göndermektedir.

Peki genel özellikleri nelerdir?

  • Erland diliyle geliştirilmiştir.
  • Open Source’dür. Bundan dolayı yaygınlık kazanmıştır.
  • Cross Platform desteklemesinden dolayı farklı işletim sistemlerinde kurulabilir ve kullanılabilir.
  • Çok iyi bir dökümantasyonu mevcuttur. bknz: https://www.rabbitmq.com/getstarted.html
  • Cloud tarafında web arayüz sunarak kullanım kolaylığı sağlamaktadır.

Message Broker; mesaj kuyruk sistemlerine verilen genel isimdir. RabbitMQ bunlardan sadece birtanesidir. Kafka, MSMQ vs. diğer mesaj kuyruk sistemleridir.

RabbitMQ’yu neden kullanmalıyız?
Yazılım uygulamalarında ölçeklendirilebilir bir ortam sağlayabilmek istiyorsak eğer RabbitMQ kullanılmalıdır. Bunu şöyle açıklayabiliriz; bir web sitemizin yahut mobil uygulamamızın olduğunu düşünelim. Kullanıcıdan gelen bir istek neticesinde anlık cevap veremiyorsak ya da anlık olmayan/zaman alan işlemleri devreye sokmamız gerekiyorsa kullanıcıyı oyalamak yerine bu tarz bir süreci asenkron bir şekilde işleyip uygulama yoğunluğunu düşürmemiz gerekmektedir. Aksi taktirde kullanıcı gereksiz bir Response Time süresine maruz kalacak ve yazılımımız aleyhine bir durum söz konusu olacaktır.

İşte buradaki asenkron süreci kontrol edecek olan yapı RabbitMQ’dur. RabbitMQ, Response Time zamanı uzun sürebilecek operasyonları uygulamadan bağımsızlaştırarak buradaki sorumluluğu farklı bir uygulamanın üstlenmesini sağlayacak olan bir mekanizma sunmaktadır. Bu mekanizma; uzun sürecek/maliyetli işlemleri RabbitMQ aracılığıyla kuyruğa gönderecektir ve bu kuyruktaki işlemler farklı bir uygulama tarafından işlenerek sonuç asenkron bir şekilde ana uygulamadan bağımsız elde edilecek, böylece ana uygulamada ki yoğunluk mümkün mertebe minimize edilmiş olacaktır.

Buna somut bir örnek vermemiz gerekirse; bir web sitesi üzerinden herhangi bir Word dosyasını PDF formatına dönüştürme hizmetini sağlayacaksanız eğer buradaki işlem yoğunluğunu web uygulamasına yaptırmaktan kaçınılması gerekmektedir. Yapılması gereken RabbitMQ aracılığıyla oluşturulan bir kuyruğa tüm değerlerin sokulması ve süreçte ilgili kuyruğu dinleyen farklı bir uygulama aracılığıyla convert operasyonunun gerçekleştirilmesi gerekmektedir. Haliyle ana uygulamayı gereksiz bir Response Time’a maruz bırakmadan gerekli dönüşüm operasyonu başarıyla sonlandırılmış olacaktır.

Web yahut mobil uygulamalarda kullanıcılara gönderilecek e-postaların response time sürelerine maruz kalmamak için RabbitMQ ile kuyruğa atılıp farklı bir uygulama tarafından işlenerek gönderilmesi maliyet açısından kazandıran doğru bir yaklaşım olacaktır.

RabbitMQ’nun İşleyişi

RabbitMQ’nun işleyişini anlayabilmek için aşağıdaki görsel şemayı inceleyebilirsiniz.
RabbitMQ Nedir?

Şemada da görüldüğü üzere RabbitMQ temelinde Publisher ve Consumer olmak üzere iki aktör ile birlikte Exchange ve Queue ensturmanları mevcuttur. Burada Publisher RabbitMQ mesaj kuyruğuna mesaj gönderen yani bir başka deyişle mesaj üreten kişidir/uygulamadır. Publisher mesajı publish ettikten sonra ilgili mesajı Exchange karşılayacaktır. Exchange, kendisine belirtilen route ile ilgili mesajı kuyruğa yönlendirir. İlgili mesajın nasıl kuyruğa gideceği Exchange içerisindeki routedan öğrenilir. Ardından kuyruğa gelen mesajlar Queue‘de sıralanır. Queue ilk giren ilk çıkar mantığında(FIFO) çalışan bir mekanizmaya sahiptir. Kuyruktaki mesajları tüketen/alan kişi/uygulama ise Consumer‘dır. Consumer herhangi bir dille geliştirilebilir olduğundan dolayı yazılım dilinden bağımsız bir uygulamadır. Tüm bu süreçte RabbitMQ AMQP(Advanced Message Queuing Protocol) protokolünü kullanmakta ve ilgili protokol üzerinden faaliyetlerini gerçekleştirmektedir.

Evet… Buraya kadar RabbitMQ’nun ne olduğuna dair teorik bir temellendirmede bulunmuş olduk. Bir sonraki yazımızda RabbitMQ’nun kurulumunu ele alacağız. O halde şimdilik görüşmek üzere…

İlgilenenlerin faydalanması dileğiyle…
İyi çalışmalar…

Bunlar da hoşunuza gidebilir...

2 Cevaplar

  1. 19 Şubat 2020

    […] RabbitMQ Nedir? Ne Amaca Hizmet Etmektedir? […]

  2. 21 Şubat 2020

    […] göz atarsanız eğer RabbitMQ’ya dair ilk olarak ele aldığımız makalemizdeki(bknz: RabbitMQ Nedir? Ne Amaca Hizmet Etmektedir?) görselde Exchange diye bir yapılanmanın olduğunu lakin bu yukarıdaki şemada ise […]

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

*