RabbitMQ mesaj brokeri haqqında

RabbitMQ mesaj brokeri haqqında

23.07.2023

1590

Message queue (mesaj sıra) sistemləri

 

Bu, ümumiyyətlə, sıx trafik axını olan tətbiqlərdə lazımdır. Bu strukturların köməyi ilə bir tətbiqdən alınan mesajın yeri gələndə digər tətbiqə ötürülməsini təmin edə bilərik. Tətbiqlərimizdə dərhal görülən işlərə həmişə ehtiyacımız olmaya bilər. Belə hallarda Message Queue strukturlarından istifadə etməklə dərhal yerinə yetirilməsi lazım olmayan işlər növbə strukturunda yerləşdirilir.

 

RabbitMQ nədir?

 

RabbitMQ növbəli mesaj sistemidir, open source-dur. Mesaj sistemləri, müxtəlif sistemlərin bir-biri ilə məlumatlarını mübadilə etməsinə kömək edir. RabbitMQ müxtəlif proqramlar və platformalar arasında asinxron mesajlaşma imkanı yaradır. Alternativləri Apache Kafka, Msmq, Microsoft Azure Service Bus, Kestrel, ActiveMQ kimi mesaj sistemləridir. RabbitMQ virtual runtime’da çalışır və erlang dili ilə yazılmışdır.

 

  1.  Publisher — mesajları göndərən sistem və ya servisdir. Publisher vasitəsi ilə mesajlar müəyyən Exchange’ə yönləndirilir.
     
  2. Exchange: Bu Funksiya isə mesajı əlaqəli Routing Key‘ə görə əlaqəli Queue‘ya kateqoriyalara ayıraraq  yönləndirməktir . Bu kateqoriyaları da Exchange Type olaraq adlandırırıq.  Exchange özünün bir neçə növləri vardır:
  • Direct exchange: Ediləcək işlərə görə bir routing key təyin olunur və buna görə əlaqəli direct exchange ilə məqsədə ən uyğun queue göndərilir. Consumer bu Queue’yə görə işini görür.
     
  • Fanout exchange: Burda routing key’in bir vacibliyi yoxdur. Bütün Queue’lərə mesajların kopyalarını göndərir. Routing Key istifadə olunanları isə göndərməyib göz ardı edir.  Bu növ mesajların birdən çox alıcı tərəfindən alınacağı təqdirdə istifadə edilir. Məsələn, oireal-time idman xəbərləri kimi dərclərdə fanout exchange işlədilir.
     
  • Topic Exchange:  Burada verilən Routing Key’lərə uyğun olaraq fərqli Queue’lərə yazmaq olur. Routing Key’lər bir və ya birdən çox “wildcard” simvolu istifadə edib bir neçə Queue yə yönləndirilə bilər. ”*” və ya “#” ilə hər hansısa qrupa və ya bütün mesajlara çatmaq olur. Bu növ, mesajı fərqli-fərqli kateqoriyalara ayırmaq lazım olduqda istifadə olunur.
     
  • Headers Exchange: Bu exchange-də routing key’i işlətməz və message headers’dəkı bir neçə xüsusiyyətlər və identifikasiyası ilə düzgün queue’yə göndərilir. Header üzərindəki attributlar ilə queue üzərindəki attributların hamısının dəyərlərinin bir-birini tutması lazımdır.
     

           Queue — Mesajın müvəqqəti olaraq saxlandığı depodur. Və ya  növbədir.
 

           Consumer — Mesajları alan və lazımi işləri üzərində tətbiq edən sistem və ya servisdir.
 

FIFO -RabbitMQ’da gedən mesajların işləmə sırası “first in first out”, yəni, ilk daxil olan ilk çıxar şəklindədir. Routing key Mesajları müəyyən Exchange’dən müəyyən Queue’yə yönləndirmək üçün istifadə olunan bir parametrdir başqa cür Binging Key olaraq adlandırılır. 

Channel Mesajın Publisher’dən RabbitMQ’yə göndərilməsi və RabbitMQ’dən Consumer’ə göndərilməsi zamanı Channel anlayışından istifadə olunur. Bir sözlə Channel vasitəsi ilə RabbitMQ’lə əlaqə yaradaraq mesaj göndərib ala bilərik. Hər Channel, bir Queue və ya Exchange ilə əlaqələndirilib müəyyən kanal üzərindən göndərilə bilər.

 

Niyə işlətməliyik?

 

Hər şey çoxyönlü bir mühit yaratmaq üçündür. İşləri asinxron bir şəkildə həyata keçirərək, həm proyektimizi işlədən insanları gözləmə müddəti maliyyətindən qutarmaq, həm də server üzərindəki paralel proses maliyyətinin minimuma endirilməsi üçündür. 

 

Quraşdırılmasına başlamadan əvvəl Erlang yükləyirik

 

Erlang dilini quraşdırdıqdan sonra RabbitMQ quraşdırmağa başlayırıq. Bu link - dən yükləmək lazımdır. Command Prompt –u açırıq. Orada “C:\Program Files\RabbitMQ Server\rabbitmq_server-3.6.0\sbin\” yoluna daxil olub rabbitmq-plugins.bat enable rabbitmq_management komandasını işlədirik. 

 

Tətbiq sahələri

 

Mikroservis Arxitekturası

 

RabbitMQ mikroservis arxitekturasında müstəqil xidmətlər arasında əlaqəni asanlaşdırmaq üçün istifadə olunur. Hər bir mikroservis öz funksionallığını həyata keçirir və digər mikroservislərlə asinxron əlaqə yaratmaq üçün RabbitMQ-dan istifadə edə bilər. Bu, xidmətlər arasında asılılığı azaldır və sistemdə miqyaslılığı artırır. 

 

İnteqrasiya Ssenariləri

 

Satış sifarişi yaradıldıqda, RabbitMQ bu məlumatı maliyyə sisteminə ötürmək və ya məhsul inventarının yenilənməsini təmin etmək üçün istifadə edilə bilər.

 

Məqaləni hazırladı: Məhəbbət Babayeva

Təsdiqlədi: Əlinemət İsiyev