Ana içeriğe atla

RabbitMQ Nedir?

Message Queue uygulamalarından bir olan RabbitMQ son zamanlarda yazılımcılar tarafından en çok tercih edilen uygulamalardan bir haline gelmiştir. Bu makaleyi okumadan önce *MQ (Message Queue) Mantığı makalesini okumanızı tavsiye ederim. Ön bilgi niteliğindeki bu makaleyi anlamak burada anlatacaklarımı daha iyi anlamanız için çok önemlidir. Bu makalemi de Message Queue mantığını iyi anladığınızı varsayarak yazıyorum.
Rabbit MQ Nedir?
Makalemizin içeriğinde RabbitMQ'nün ne olduğu, çalışma mantığı, RabbirMQ Server uygulaması, aynı zamanda RabbitMQ client kütüphanaleri ile ilgili bilgi verilecek ve makalenin sonunda örnek uygulama üzerinden konu pekiştirilecektir.
Öncelikle bilmeniz gereken en önemli konulardan bir tanesi RabbitMQ Client - Server mimarisi ile tasarlanmıştır. Önemli olan nokta publisher, Server ve consumer hepsi ayrı ayrı makinelerde olabilir. Ayrıca publisher ve consumer sayıları için herhangi bir kısıtlama yoktur. Bunu daha açıklayıcı şekilde açıklayacak olursak ortada bir queue sunucumuz var. Yani queue'larımız bu sunucu üzerinde tutulur ki buna da RabitMQ Server uygulaması denir. Publisher bu sunucuya bağlanarak mesajı gönderir. Ve publisher sayısı için de bir kısıtlama yoktur. Aslında kısıtlama size bağlıdır. Varsayılan ayar olarak belirli kısıtlamalar vardır tabi ki ama mimari olarak kısıtlamak size kalmış durumda. Yani istenilen sayıda kişinin RabbitMQ sunucusuna bağlanarak kuyruklara mesaj yazması mümkün. Bu aynı zamanda consumer için de geçerli. Yani kuyruktan mesajları alıp okuyan veya işleyenler için. Consumer uygulaması için de herhangi bir kısıtlama yoktur. Yukarıda bahsettiğimi RabitMQ server ayarlamaları dışında. Ama dediğim gibi bunu da sınırsız yapmak size kalmış.

Yukarıda anlattığım mimari aslında RabbitMQ mimarisi konusunda kısa da olsa önemli bilgiler içermektedir. Önemli olan nokta client-server mimarasinin RabbitMQ de nasıl uygulandığını iyi anlamaktır. Çünkü RabbitMQ konusuna hakim olmak sadece kuyruğa mesaj yazıp kuyruktan mesaj okumaktan ibaret değil. Aslında bu işin temelinde mimari tasarım vardır. Yani sizin RabbitMQ sunucunuz nerede olacak, RabbitMQ sunucusunda hangi kuyruklar olacak, bu kuyruklara verilere Exchange'in hangi paternine göre yazılacak, kuyruktan veriler nasıl okunacak, bir kaç consumer olması durumunda kuyruk mesajları hangi kurallar doğrultusunda dağıtılacak ve işlenecek?
Bu soruların tamamına cevap verebilmek için biraz yazılım ve mimari tasarım tecrübesi de önemli. Özellikle büyük yazılımlar için oluşabilecek yük durumların da doğru dağıtılması RabbitMQ mimari tasarımının anahtarlarından bir tanesidir.
Makalemizin konu başlığı da "RabbitMQ Nedir?" olduğu için bu makaleyi okuyan kişilerin bu sorunun cevabını alarak konuyla alakalı araştırmalarına devam etmesi gerektiğini düşünüyorum. O yüzden makalenin bu kısmından sonra daha spesifik olarak bu sorunun cevabı için odaklanacağım.
Öncelikle bilmeniz gereken en önemli konu RabbitMQ uygulamasının bir sunucu uygulaması olduğudur. Bu sunucu uygulamasının hangi işletim sisteminde olduğunun bir önemi yoktur. Zira RabbitMQ Server Kurulumu İçin İşletim Sistemi Seçimi makalesinde bu konuya odaklandım. Bu konunun da RabbitMQ'u anlamanız konusunda önemli olduğunu düşündüğüm için göz atmanızı tavsiye ederim.
Yukarıda da dediğim gibi RabbitMQ bir sunucu uygulamasıdır ve görevi client uygulamalarının sunucu içerisindeki kuyruklara veri yazıp bu kuyruktan verileri okumayı sağlamaktır. Bu işi yapma konusunda da diğer Message Queue uygulamalarından gerek mimari, gerek programlama dili desteği, gerek işletim sistemi desteği konusunda en önde olan uygulamadır desek yanılmayız.
Bahsettiğim mimari tasarım zenginliği de bu uygulamanın Message Queue alanından en tercih edilen uygulama olmasına getirip çıkarmıştır. Hatta yurtdışında RabbitMQ is a New King sözüyle defalarca karşılaştım ve RabbitMQ ile tanıştıktan sonra gerçekten böyle olduğunu ben de gördüm.
RabbitMQ'nün sunduğu en büyük avantajlardan biri aslında AMQP yani Advance Message Queue Protocol'üne göre dizayn edilmesi ve klasik Message Queue uygulamalarından farklı olarak message dağıtıcı görevinde Exchange teriminin çok efektif kullanılmasıdır. Aslında bu konuyu daha detaylı Exchange  Message Patternlerini anlatırken anlatacağım. Ama burada da kısaca özetleyecek olursak örneğin bizim 10 tane kuyruğumuz(queue) varsa gönderdiğimiz mesajın hangi kuyruğa gideceğine nasıl karar veririz. Bunun için dizayn edilmiş direct, fanout, topic, header gibi yöntemlerin detaylarını yukarıda linkini verdiğim makalede bulabilirsiniz.
Son olarak da konuyu biraz toparlamak istiyorum. Umut ediyorum ki konuyu okuyan herkesin kafasında RabbitMQ ile ilgili bir şeyler canlanmıştır. Önemli olan nokta da budur zaten. Yani bu makalenin temel amacı zaten RabbitMQ konusunda bilgilendirmek. Konuyu tam olarak anlamanız içinse benim görüşüm RabbitMQ Server uygulamasını bir bilgisayara kurarak devamında program içinde, RabbitMQ üzerinde kuyruklar oluşturup bu kuyruklara veri yazdığınızda ve bu mesajları okuduğunuzda RabbitMQ konusunu tam olarak anlayabileceksiniz.
Bunun için de sırasıyla makale linkleri vereceğim. Bu makale linklerini takip ederek buradan sonra küçük bir RabbitMQ uygulaması yaparak konuyu pekiştirmenin en doğru yol  olduğunu düşünüyorum.
Konu anlatımımı tekrar okuduktan sonra ister Message Queue konusunda başka uygulamalarda tecrübesi olan, isterse de bu konuya yeni başlayanlar için yeterli düzeyde bilgiler bulunduğunu düşünüyorum ki buradan sonrasının ise tecrübeyle sağlamlaşacağını düşünüyorum. Yine de konuyla alakalı sorularınız olursa sormaktan çekinmeyin. Fırsat buldukça sorularınızı yanıtlamaya çalışacağım...

Yorumlar

Bu blogdaki popüler yayınlar

Medyan (Ortanca) Nedir? Nasıl Hesaplanır? Nerelerde Kullanılır?

Medyan işlemi olasılık hesaplamalarında sıkça kullanılan bir sayı dizisinin ortalamasını hesaplamak için alternatif yöntemlerden bir tanesidir. Ortanca medyan işleminin diğer adıdır. Matematiksel olarak medyan işlemi bir sayı dizisi küçükten büyüğe sıralayarak ortada kalan elemanı medyan değeri olarak belirleme işlemidir. Örnek verecek olursak: 2, 1, 5, 4, 5, 1, 2, 3, 5 serisi sıralanırsa 1, 1, 2, 2, 3, 4, 5, 5, 5 serisi elde edilir. Bu seri 9 elemanlı olduğundan ortadaki, yani 5. eleman (medyan) olacaktır. 5. eleman 3 sayısıdır. Yani ortanca değeri 3'dür Eleman sayısı tek sayı olan bir seride medyan değerin sırasının hesaplaması şu şekilde formüle edilir. Medyanın Sırası = (Eleman Sayısı + 1) / 2 Bu formülü yukarıdaki örneği uygulayacak olursak; Medyanın Sırası = (9 + 1) / 2 = 5 Veri serisi eleman sayısı bir çift sayı ise bu durumda serinin 2 medyanı olacaktır. Örneğin 2, 1, 5, 4, 5, 1, 2, 3, 5, 4 serisi sıralandığında 1, 1, 2, 2, 3, 4, 4, 5, 5, 5 s

Ağaçlar Kireçle veya Badana İle Neden Boyanır?

Ağaçlar kireçle boyanmasının veya badana yapılmasının hem çevreye hem de doğaya, ağaçlara faydası var. Bu makalede bu geleneği enine boyuna tartışmaya çalıştık. Ağaca zarar veren mikrop ve bakterileri öldürür. Ağacı çok aşarı soğuk havalarda ve çok aşırı sıcak havalarda korur. Ağacın çürümesini ve kurtlanmasını önler. Ağacın gövdesinin alabileceği zararları en az düzeyde düşürmeyi sağlar. Hoş, güzel, hijyenik, temiz pırıl pırıl bir görüntü oluşturur. Ayrıca çok sıcak havalarda da ağacı yanmaya karşı korumak. En büyük etkisi soğuk havalarda ağacı don vurmalarına karşı korumak . Küresel ısınma göz önüne alındığında mevsim değişiklikleri ani don, ani ısı artışları ve azalışları sonucunun doğuracağı etkenler için yararlı etkin bir yöntem. Gövdeden obur dalların çıkmasını azaltmak için sürülür. Kireçleme ağaçları güneş yanığından korumak için yapılıyor. Ağaçlar da güneşten yanabiliyorlar. Bu arada odun dokudaki gözenekleri doldurarak kapattığı için, zararlıların yuv

Azərbaycan Dilində Vurğu Qəbul Etmeyen Şekilçiler

Sözlərdə hecalardan birinin digərlərinə nisbətən daha qüvvətli deyilməsinə heca vurğusu deyilir. Üzərinə vurğu düşən hecaya isə vurğulu heca deyilir. Azərbaycan dilində vurğu adətən söz sonuna düşür. Söz şəkilçi qəbul ederkən vurğu adətən şəkilçinin üzərinə keçir. Məsələn: çiç ə k - çiçəkl ə r - çiçəklərd ə n məkt ə b - məktəbl i - məktəblil ə r - məktəblilərd ə n Buna baxmayaraq dilimizdə bir sıra şəkilçilər var ki onlar vurğu qebul etmirlər. Bu məqalədə Azərbaycan dilində vurğu qebul etməyən şəkilçilər incələnəcək ve bu şekilçilərin hansı hallarda vurğu qebul edib hansı hallarda vurğu qebul etmediyi araşdırılacaqdır. Eyni zamanda bildirmək istəyirəm ki vurğu ilə bağlı daha geniş və ətraflı məlumat üçün Azərbaycan Dilində Vurğunun Praktik Məsələləri adlı məqaləyə də nəzər yetirə bilərsiniz.  1. İsimlərdəki şəxs(xəbərlik) şəkilçiləri Məsələn: müəli'məm müəli'msən müəli'mdir müəli'mik müəli'msiniz müəli'mdirlər Qeyd: -dır4