RabbitMQ — 2007-yilda taqdim etilgan, Erlang dasturlash tilida yozilgan ochiq manbali xabar brokeri (message broker). U Advanced Message Queuing Protocol (AMQP) standartining birinchi va eng mashhur implementatsiyalaridan biri hisoblanadi.
AMQP protokoli asosida qurilishi
AMQP — turli dasturlash tillari va tizimlar orasida xabar almashishning ochiq standarti bo’lib, u xabarlarning qanday marshrutlanishi, navbatga qo’yilishi va tasdiqlanishini aniq belgilaydi. RabbitMQ ushbu standartni to’liq amalga oshirib, turli texnologiyalarda yozilgan tizimlarning bir-biri bilan izchil aloqa qilishini ta’minlaydi.
Erlang’da yozilishi va barqarorligi
RabbitMQ’ning Erlang tilida yozilgani tasodifiy emas — Erlang telekommunikatsiya tizimlari uchun yaratilgan bo’lib, yuqori concurrency va uzluksiz ishlashga ixtisoslashgan. Bu meros RabbitMQ’ga minglab bir vaqtdagi ulanishni barqaror boshqarish qobiliyatini bergan.
Almashinuv va navbat modeli
RabbitMQ’da xabar avval “exchange” (almashinuv nuqtasi) deb ataladigan komponentga yuboriladi, u esa oldindan belgilangan qoidalar asosida xabarni tegishli “queue” (navbat)larga yo’naltiradi. Bu ikki bosqichli model — to’g’ridan-to’g’ri producer’dan consumer‘ga emas — xabarlarni murakkab shartlar asosida moslashuvchan tarzda marshrutlash imkonini beradi.
Kafka bilan farqi
Kafka uzoq muddatli, qayta o’qilishi mumkin bo’lgan voqealar jurnaliga ixtisoslashgan bo’lsa, RabbitMQ an’anaviy xabar navbati modeliga yaqinroq — xabar odatda iste’mol qilingandan so’ng navbatdan o’chiriladi. Bu farq RabbitMQ’ni aniq vazifalarni bir marta bajarish (task queue) kabi holatlar uchun, Kafka‘ni esa katta hajmdagi voqealar oqimini tahlil qilish uchun ko’proq mos qiladi.
Qo’llanilish sohalari
RabbitMQ fon vazifalarini (background job) navbatga qo’yish, mikroservislar orasidagi asinxron aloqa va bildirishnoma tizimlarida keng qo’llaniladi. Uning nisbatan sodda modeli va yetuk kutubxonalar ekotizimi uni ko’plab veb-ilova arxitekturalarida standart tanlovga aylantirgan.
Bog’liq tushunchalar
AMQP, Erlang, Message broker, Navbat, Kafka, Producer/Consumer, Mikroservis