RabbitMQ هو برنامج middleware للرسائل الموزعة تم تطويره بلغة Erlang وتمت مصادرته. يدعم بروتوكول Advanced Message Queuing Protocol (AMQP) ومكتبات عملاء في لغات برمجة مختلفة مثل Java, Golang, PHP, و Python.
الميزات
- الاعتمادية: يضمن الاعتمادية من خلال استمرارية الرسائل، دعم العمليات التجارية، واستلام وإرسال الإشارات الاعترافية.
- آلية التوجيه: يدعم نماذج الاشتراك والاستهلاك الرئيسية مثل البث، الاشتراك، تطابق العناوين، وما إلى ذلك.
- التوسعة: يمكن لعدة عقد RabbitMQ الانضمام معًا والتوسع بشكل ديناميكي وفقًا لاحتياجات العمل الفعلية.
- التوفرية العالية: يمكن تعيين الطوابير كمرايا على الأجهزة في العقد، مما يجعل الطوابير متوفرة لا تزال في حالة حدوث مشكلات في بعض العقد.
- البروتوكولات المتعددة: بالإضافة إلى دعم AMQP الأصلي، يدعم RabbitMQ أيضًا عدة بروتوكولات لبرامج Middleware للرسائل مثل STOMP و MQTT، وما إلى ذلك.
- عملاء متعددو اللغات: يدعم RabbitMQ تقريبًا جميع اللغات المستخدمة بشكل شائع مثل Java, Python, Ruby, PHP, C#, JavaScript، وما إلى ذلك.
- واجهة إدارة: يوفر RabbitMQ واجهة مستخدم ودية لمراقبة وإدارة الرسائل وعقد الأجهزة.
- آلية البرنامج المساعد: يوفر RabbitMQ العديد من البرامج المساعدة لتوسيعات شاملة ويمكن للمستخدمين أيضًا كتابة برامجهم البرنامجية الخاصة.
الحالات الرئيسية للاستخدام
المعالجة الغير متزامنة
يمكن إخطار أجزاء غير أساسية أو أقل أهمية من عملية الأعمال إلى النظام الهدف بشكل غير متزامن باستخدام إشعار الرسالة، مما يسمح لعملية الأعمال الرئيسية بالاستجابة على الفور من دون الانتظار بشكل متزامن لنتائج المعالجة من أنظمة أخرى.
فك الارتباط التطبيقي
يمكن تحقيق توسيع الأعمال بناءً على آليات الاشتراك في الرسائل. على سبيل المثال، في سيناريو طلب الشراء للتجارة الإلكترونية، عندما يقوم المستخدم بإجراء طلب، يتم إنشاء رسالة طلب. يمكن لوحدة المستودع الاشتراك في رسالة الطلب للشحن، ويمكن لوحدة النقاط الاشتراك في رسالة الطلب لإضافة النقاط، ويمكن لوحدة الرسائل النصية الاشتراك في رسالة الطلب لإرسال رسائل نصية، وهلم جرا.
قمم الأحمال
نظرًا لوجود اختلافات في قدرات معالجة النظام الفرعي والرئيسي، يمكن لطوابير الرسائل أن تعمل كمنظم للسماح لأنظمة النظام الفرعي بمعالجة حركة المرور بوتيرة ثابتة.
على سبيل المثال، في حالة دفع طلب بنجاح وإخطار وحدة المستودع للشحن، إذا كانت وحدة الطلب الحالية تدعم التناسب العالي بمقدار 1000 ونقل الوحدة تدعم 100 فقط، يمكن لطابور الرسائل أن يسمح لوحدة المستودع بالاشتراك في رسالة الطلب ومعالجة الشحن ببطء في طابور الانتظار.
ملاحظة: هذا مشابه للانتظار في محطة المترو.