شرح RabbitMQ في 5 دقائق أو أقل
نشرت: 2022-11-24سنرى اليوم كيفية تسريع وقت تحميل صفحاتك عن طريق تنفيذ أثقل معالجة بشكل غير متزامن ، وكلها تتم إدارتها ببساطة شديدة ، بفضل RabbitMQ.
من المؤكد أن استقرار وسرعة التطبيق أو موقع الويب من بين أهم العوامل للمستخدمين. من الذي لم يغادر موقعًا على الإطلاق قبل مشاهدة الصفحة الأولى لأنه استغرق وقتًا طويلاً؟
ما هو RabbitMQ

RabbitMQ هو وسيط رسائل مفتوح المصدر وموزع وقابل للتطوير يعمل كوسيط للتواصل الفعال بين المنتجين والمستهلكين.
ينفذ RabbitMQ بروتوكول رسائل طبقة التطبيق AMQP ، والذي يركز على توصيل الرسائل غير المتزامنة مع ضمان التسليم من خلال تأكيدات استلام الرسائل من الوسيط إلى المنتج ومن المستهلكين إلى المنتج.
كيف يعمل RabbitHQ
بطريقة مبسطة ، يحدد RabbitMQ قوائم الانتظار التي ستخزن الرسائل المرسلة من قبل المنتجين حتى تحصل التطبيقات المستهلكة على الرسالة وتعالجها. يسمح لنا بتصميم وتنفيذ الأنظمة الموزعة ، حيث يتم تقسيم النظام إلى وحدات مستقلة تتواصل مع بعضها البعض من خلال الرسائل.
مثل كل الاتصالات ، نحتاج إلى منتج ورسالة وجهاز استقبال. في منتصف الكعكة يوجد RabbitMQ ، والذي سيكون المكان الذي تنتظر فيه الرسالة المتلقي.
دعونا نفهم بشكل أفضل كيف يعمل من خلال معرفة أنواع التبادلات التي تمثل تبادل الرسائل.
أنواع الصرف
من خلال التبادلات ، عندما نرسل رسالة عبر RabbitMQ ، لا نرسلها مباشرة إلى قائمة الانتظار ؛ بالنسبة للأنظمة الأخرى لقراءتها ، نرسلها إلى بورصة تكون مسؤولة عن إعادة توجيه الرسائل إلى قوائم انتظار مختلفة.

أنواع التبادلات هي Direct و Fanout و Topic و Readers.
التبادل المباشر
لنفترض أن المنتج يحتاج إلى إصدار رسالة تأكيد الشراء لثلاثة مستهلكين. وهذا يعني أن النظام يحتاج إلى الاتصال بثلاثة أنظمة مختلفة أخرى لإجراء عملية الشراء.
نظرًا لأن RabbitMQ يرسل الرسالة بشكل منفصل إلى كل قائمة انتظار ، فهناك زخم لجعل هذه الأنظمة الأخرى تتلقى الرسالة مباشرة.
عادةً ما يقوم التبادل بإعادة توجيه الرسالة إلى قوائم الانتظار ، لكننا غالبًا لا نريد إرسال رسائلنا إلى جميع قوائم الانتظار. لذلك ، هناك العديد من الشروط التي يمكننا تطبيقها لإجراء تبادل.
حتى تتمكن من إرسال رسالتك إلى مستهلك واحد فقط ؛ بدلاً من إرسالها إلى الجميع.
مفتاح الربط : لتوصيل قائمة انتظار بتبادل ، تحتاج إلى إنشاء ارتباط ، علاقة بين قائمة انتظار وتبادل ، مثل الموصل.
مفتاح التوجيه : في هذا الرابط ، يمكننا أيضًا إنشاء عنصر يسمى مفتاح التوجيه ، والذي يعد بعبارة أخرى مفتاحًا لإعادة توجيه رسائلنا إلى قائمة انتظار محددة.
إذا كان لديك مفتاح توجيه X ، ومفتاح توجيه Y ، ومفتاح توجيه Z ، فإن الرسالة التي تحتوي على مفتاح التوجيه Y ، على سبيل المثال ، ستنتقل إلى قائمة الانتظار Y وسيتم تسليمها مباشرة إلى المستهلك الذي حددته لتلقي الرسالة.
بهذه الطريقة ، يمكن أن يكون لدينا العديد من قوائم الانتظار المتصلة بالبورصة ، ولكن في نفس الوقت ، يمكن أن يكون لها أيضًا علاقات مختلفة مع التبادلات باستخدام مفاتيح التوجيه.
تبادل Fanout
عندما يتم إرسال الرسالة إلى التبادل ، يتم إرسالها إلى جميع قوائم الانتظار المتصلة بها. لذلك ، إذا كان لديك 10 قوائم انتظار متصلة بتبادل توزيع ، فستتلقى جميع قوائم الانتظار الرسالة التي تم إرسالها.
موضوع الصرف
إنها واحدة من أكثر التبادلات مرونة ، مما يسمح لنا بإرسال الرسائل وفقًا للموضوع. واستنادًا إلى طريقة تسمية مفاتيح التوجيه ، من الممكن إنشاء أنماط من القواعد والعلاقات بين الأنظمة.
على سبيل المثال: routing key (x.*); routing key(*.z); routing key (*.y.*).
routing key (x.*); routing key(*.z); routing key (*.y.*).
ما هو AQMP في RabbitMQ
AMQP (بروتوكول وضع الرسائل في قائمة انتظار المتقدم) هو بروتوكول مراسلة مفتوح يُستخدم لتحديد نقل الرسائل بين تطبيقات متعددة. إنه مشابه لبروتوكولات HTTP و TCP من حيث أنه بروتوكول على مستوى الأسلاك ، باستثناء أنه يسمح بالنقل غير المتزامن.
اختار RabbitMQ تنفيذ AMQP لعدة أسباب. الأول هو أن هذا البروتوكول يوصف بأنه معيار للبرمجيات الوسيطة ، على عكس JMS ، الذي يحدد API.
قام اتحاد دولي ، بما في ذلك الشركات الكبيرة مثل Red Hat و Cisco Systems و Microsoft ، بكتابة مواصفات AMQP هذه. والثاني هو قابلية التشغيل البيني لهذا البروتوكول ، والذي يسمح لأي تطبيق يطبق AMQP بالتواصل مع وسيط AMQP.
AMQP ليس البروتوكول الوحيد الذي يستخدمه RabbitMQ. تمثل الصورة أدناه جميع البروتوكولات واللغات وواجهات برمجة التطبيقات المنفذة و / أو المدعومة من قبل RabbitMQ.
أفضل ميزات RabbitMQ
بالإضافة إلى السماح بدمج التطبيقات المختلفة من خلال الرسائل بشكل غير متزامن ومن مواقع مختلفة ، يوفر لنا RabbitMQ ميزات أخرى جعلته مشهورًا جدًا في عالم وسطاء المراسلة:
تخزين موثوق
يتضمن RabbitMQ العديد من الميزات التي تسمح له بضمان تسليم الرسائل. من بينها ، يوفر مساحة تخزين عندما لا يتمكن المستهلكون من تلقي الرسالة. يسمح للمستهلكين بقبول تسليم الرسالة لضمان معالجتها بنجاح.

إذا فشلت المعالجة ، يسمح RabbitMQ بإعادة وضع الرسالة في قائمة الانتظار ليتم استهلاكها بواسطة مثيل مختلف من المستهلك أو معالجتها مرة أخرى من قبل نفس المستهلك الذي فشل في البداية عند تعافيها.
يضمن RabbitMQ أيضًا ترتيب تسليم الرسائل ؛ أي أنه يتم استهلاكها بنفس الترتيب الذي وصلت به في قوائم انتظار RabbitMQ.
إنشاء الكتل
على الرغم من أن RabbitMQ يوفر أداءً رائعًا من خلال معالجة آلاف الرسائل في الثانية ، إلا أنه في بعض الأحيان يحتاج إلى أن يكون قادرًا على معالجة أعداد أكبر من الرسائل دون التأثير على أداء التطبيق.
لهذا ، يسمح RabbitMQ بإنشاء مجموعات لتوسيع نطاق الحل أفقيًا ، وهو شفاف لكل من المنتجين والمستهلكين.
قوائم انتظار متوفرة للغاية
في RabbitMQ ، يمكن تكرار قوائم الانتظار عبر عقد متعددة في مجموعة ، مما يضمن أنه في حالة فشل العقدة أو تعطلها ، يمكن للوسيط الاستمرار في تلقي الرسائل من المنتجين وتسليمها إلى المستهلكين المناسبين.
توجيه مرن
في RabbitMQ ، يمكن تحديد قواعد التوجيه المرنة ، حتى باتباع نمط معين ، لتوجيه الرسائل بين التبادلات وقوائم الانتظار ، من خلال عمليات الربط.
دعم بروتوكول متعدد
إلى جانب دعم بروتوكول AMQP ، يدعم RabbitMQ STOMP و MQTT و HTTP من خلال المكونات الإضافية. كما أنه يشتمل على آليات المصادقة والتحكم في الوصول لمكونات كل وسيط.
حالات الاستخدام الواقعية لـ RabbitMQ
تتمثل أهم حالات استخدام RabbitMQ في إمكانية ضمان عدم التزامن بين التطبيقات ، وتقليل الاقتران بين التطبيقات ، وتوزيع التنبيهات ، والتحكم في قائمة انتظار الوظائف في الخلفية.
ومع ذلك ، فإن حالات الاستخدام العملي لـ RabbitMQ موجودة في التجارة الإلكترونية ، حيث يتم استخدام t لمعالجة أوامر المبيعات الخاصة بك ومعالجتها وإعادة توجيهها إلى أنظمة في قطاعات أخرى ، مثل التوزيع وإصدار الفواتير.
عند معالجة الطلبات ، يمكنك إعادة توجيه رسالة المبيعات إلى مركز التوزيع ومنطقة الفاتورة. في هذا المخطط ، يعمل كل شيء أفقيًا ، باتباع النمط غير المتزامن لإرسال الرسائل ، ولكن غالبًا ما يكون من الممكن إرسال إجراء إلى عدة قوائم انتظار.
باتباع المثال السابق ، يمكن أن تكون هذه الوظيفة مفيدة للغاية عندما يقوم العميل بعملية شراء ويحتاج المنتج إلى الاستعداد للتوزيع والنقل والفواتير.
وبما أن كل قطاع من هذه القطاعات هو نظام مختلف ، فإن هدف RabbitMQ هو إعادة توجيه كل هذه الرسائل إلى الأنظمة المقابلة.
بدائل Rabbit MQ:
يعتبر RabbitMQ أبسط بكثير مما يبدو ، وهناك عدة بدائل له والتي تشمل:
# 1. أيرون إم كيو
IronMQ هو برنامج انتظار رسائل فائق السرعة. إنه متوفر للغاية ، ودائم التصميم ، ويفضل أن يكون للتسليم لمرة واحدة. IronMQ هو أقوى حل سحابي أصلي لهندسة التطبيقات الحديثة.

وهو يدعم قوائم انتظار الدفع ، وقوائم انتظار السحب ، واستطلاعات الرأي الطويلة ، مما يبقي طلبات الاستطلاع مفتوحة لفترة أطول. علاوة على ذلك ، يمكنه استخدام عدة مراكز بيانات عالية التوافر ، مما يسهل قابلية التوسع.
يمكنك النشر في السحابة أو على أجهزة مشتركة أو مخصصة أو في أماكن العمل. كما أن لديها مجموعة من مكتبات العملاء مع وثائق سهلة القراءة.
# 2. أباتشي كافكا
كافكا عبارة عن منصة لها حضور قوي في بث الأحداث الموزعة. في جوهره ، تم تصميم كافكا كسجل تنفيذ متكرر وموزع ومستمر.

تتمثل أكبر قابليتها للاستخدام في الخدمات المصغرة للطاقة التي تحركها الأحداث أو تطبيقات معالجة الدفق واسعة النطاق ، والتي تقوم تلقائيًا بتكرار الأحداث بشكل غير متزامن داخل المجموعة لتحمل الخطأ والتوافر العالي.
# 3. اباتشي اكتف ام كيو

ActiveMQ هو وسيط رسائل متعدد البروتوكولات قائم على Java. بواسطته ، يمكننا دمج التطبيقات باستخدام بروتوكول انتظار الرسائل AMQP في طبقة التطبيق.
يقوم بتنفيذ عدة بروتوكولات للتكامل ، مثل JMS (Java الأصلي) و Stomp (والذي يمكن استخدامه بواسطة تطبيقات PHP) ، من بين أمور أخرى.
بالإضافة إلى ذلك ، تمتلك أمازون نسختها "المدارة" المسمى Amazon MQ ، مما يجعل استخدام الخدمة أسهل بكثير.
الكلمات الأخيرة
كان وسطاء المراسلة تقليديًا جزءًا مهمًا داخل هياكل المنظمات. ومع ذلك ، مع زيادة المستخدمين الذين يدخلون أنظمة الشركة من خلال قنوات مختلفة ، هناك حاجة إلى المنتجات التي تسمح بتوسيع نطاقها أفقيًا بتكلفة منخفضة. السماح بمعالجة عدد كبير من الرسائل في الثانية.
هذا هو المكان الذي أصبح فيه جيل جديد من الوسطاء ، مثل RabbitMQ ، أكثر صلة بالتطبيقات الحديثة ، التي تسعى إلى تقديم مستويات عالية من التوافر والموثوقية وقابلية التشغيل البيني والأداء لعملائنا.
يمكنك أيضًا استكشاف بعض منصات استضافة RabbitMQ الموثوقة لتطبيقك.