أثناء استخدام RabbitMQ، تتطلب بعض السيناريوهات التجارية منا ضمان استهلاك التسلسلي. على سبيل المثال، في سيناريو تجاري حيث يتم إنشاء ثلاث رسائل لأداء عمليات إضافة، تعديل، وحذف البيانات، إذا لم يتم ضمان ترتيب الاستهلاك، فإن تسلسل التنفيذ قد يصبح حذف، تعديل، إضافة، مما يؤدي إلى فوضى.
كما هو موضح أدناه:
يجب النظر في مسألة تسلسل الرسائل في RabbitMQ من ثلاثة جوانب: ترتيب إرسال الرسائل، ترتيب الرسائل في الطابور، وترتيب استهلاك الرسائل.
ترتيب إرسال الرسائل
غالبًا ما لا يتطلب ترتيب نقل الرسالة في طرف الراسل رسميًّا لمعظم الشركات. لا يهم من يرسل الرسالة أولاً. إذا كانت الشركة تتطلب إرسال الرسائل بترتيب، فهذا يعني أنه يمكن إرسال رسالة واحدة فقط في كل مرة مع قفل عام، ولا يمكن إرسال الرسائل بشكل متزامن.
ترتيب الرسائل في الطابور
في RabbitMQ، سيتم تخزين الرسائل في النهاية في طابور. ضمن نفس الطابور، تكون الرسائل مرتبة بناءً على مبدأ الدخول الأولى، الخروج الأولى، الذي يضمنه RabbitMQ وعادةً لا يحتاج للقلق لدى المطورين.
ملاحظة: لا يتم ضمان ترتيب الرسائل في طوابير مختلفة. على سبيل المثال، عند دخول محطة مترو، إذا انضممت إلى إحدى ثلاث طوابير، لا يمكن ضمان ترتيب الدخول إلى المحطة بين الطوابير المختلفة.
ترتيب استهلاك الرسائل
عندما نناقش كيفية ضمان تسلسل الرسائل، نشير عمومًا إلى ترتيب استهلاك الرسائل من قبل المستهلكين. في السيناريوهات التي يستهلك فيها عدة مستهلكين رسائل من نفس طابور الرسائل، فمن المعتاد عدم القدرة على ضمان تسلسل الرسائل. كما هو موضح في الرسم التوضيحي الافتتاحي، على الرغم من ترتيب الرسائل في طابور الرسائل، يمكن لعدة مستهلكين استهلاك الرسائل بشكل متزامن، وسرعة استرجاع الرسائل، وسرعة تنفيذ المنطق التجاري، واحتمال حدوث استثناءات في التنفيذ أن تؤدي جميعًا إلى عدم اتساق تسلسل الرسائل.
على سبيل المثال: تدخل الرسائل A و B و C إلى الطابور بالتسلسل. يحصل المستهلك A1 على الرسالة A، ويحصل المستهلك B1 على الرسالة B. ومع ذلك، إذا قام المستهلك B1 بالتنفيذ بشكل أسرع، فقد يكتمل قبل المستهلك A1، أو إذا واجه المستهلك A1 خطأً، يمكن أن تؤدي كلتا الحالتين إلى عدم اتساق تسلسل الرسائل.
الحل التقليدي لمشكلة الاستهلاك بتسلسل هو أن يكون هناك مستهلك واحد فقط للطابور بهذه الطريقة، يمكن معالجة الرسائل واحدة تلو الأخرى بتسلسل. العيب في هذا هو أن القدرة المتزامنة تقل، ولا يمكن استهلاك الرسائل بشكل متزامن. هذا هو تداول.
ملاحظة: إذا كانت الشركة تتطلب الاستهلاك التسلسلي وزيادة القدرة المتزامنة، فإن النهج الشائع هو تمكين طوابير متعددة. يمكن للشركة توزيع الرسائل إلى طوابير مختلفة بناءً على قواعد، مما يزيد من مستوى القدرة المتزامنة. على سبيل المثال، في سيناريو طلبات التجارة الإلكترونية، من الضروري فقط ضمان تسلسل رسائل الطلب لنفس المستخدم. يمكن توجيه الرسائل التابعة لمستخدمين مختلفين إلى طوابير مختلفة.