محتويات الدورة

RabbitMQ / الأساسي: موارد البروتوكول والتوجيه والملكية / الدرس 3

تأكيدات الناشر والرسائل غير القابلة للتوجيه

تتبع قبول الوسيط منفصلاً عن التوجيه واكتمال العمل مع نتائج الشبكة غير المؤكدة.

وقت القراءة التقريبي: 4 دقيقةتاريخ مراجعة المحتوى
في هذه الصفحة

أهداف الدرس

  • شرح نطاق تأكيد الناشر وإرجاع mandatory.
  • تصميم تتبع محدود للنشرات المعلقة.

التأكيد مرحلة تخص الوسيط

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

قد يجتمع القبول مع غياب وجهة مطابقة

قد يقبل مبادل موجود نشراً لا يطابق أي ربط صف. دون معالجة مناسبة لعدم التوجيه، قد تهمل الرسالة وفق قواعد البنية. مع mandatory تعاد الرسالة غير الموجهة إلى الناشر بآلية الإرجاع المدعومة؛ لذلك يجب معالجة الإرجاعات والتأكيدات معاً. لا يثبت التأكيد الموجب وحده توجيهاً مفيداً. غياب المبادل حالة مختلفة وقد يغلق القناة بـNOT_FOUND. افصل الحالات في معالجة أخطاء التطبيق، وراجع سلوك المبادل البديل عندما يكون جزءاً من البنية المقصودة.

تسجيل متطلبات النشر معاً

يسمي JSON مبادلاً ومفتاح توجيه وهوية رسالة اصطناعية ثابتة، ويطلب التأكيد ومعالجة mandatory-return. إنه سجل تصميم تطبيقي، لا إعداد واجهة عميل تنفيذي. يجب أن يفعل العميل وضع التأكيد المدعوم، ويسجل معالجات النتيجة، ويحد عدد أو بايتات الرسائل المعلقة. قد يقلل انتظار كل تأكيد منفرد الإنتاجية، وقد يستنفد التخزين غير المتزامن غير المحدود الذاكرة. اختر نافذة ومهلة من متطلبات التطبيق، ثم تحققهما في بيئة مستقلة مصرح بها، لا بنسخ حجم دفعة عام.

json عقد نتائج نشر اصطناعي
{"exchange":"lab.events","routing_key":"parcel.accepted","message_id":"evt-P17-accepted","publisher_confirms":true,"mandatory":true,"handle_returns":true}

يغطي التأكيد والإرجاع نتائج مختلفة؛ والأعلام توثيق لا منشئ عميل.

حفظ الهوية غير المؤكدة للمصالحة

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

python حساب محلي لتأكيد متعدد
pending = {1: 'evt-a', 2: 'evt-b', 3: 'evt-c'}
confirmed_through = 2
pending = {seq: event_id for seq, event_id in pending.items() if seq > confirmed_through}
assert pending == {3: 'evt-c'}
print(pending[3])
الناتج المتوقع
evt-c

يمحو الحد المعطى 1 و2؛ ولا يحاكي المعالجات أو يثبت التسليم.

توضيح المهلة والنتيجة النهائية

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

الأخطاء الشائعة وإصلاحها

الإبلاغ عن التأكيد الموجب كعمل مكتمل.

لماذا يحدث؟
الخلط بين القبول واكتمال المستهلك.
كيف تصلحه؟
استخدم عقد نتيجة أو حالة تجارية منفصلاً.
كيف تتجنب تكراره؟
سم مراحل النقل والعمل في المقاييس.

اختفاء رسائل مؤكدة لغياب رابط مطابق.

لماذا يحدث؟
إغفال الإرجاع أو التوجيه البديل.
كيف تصلحه؟
راجع mandatory والبنية معاً.
كيف تتجنب تكراره؟
اختبر عدم توجيه مقصوداً في مختبر مصرح.

إعادة المعلق بهويات جديدة.

لماذا يحدث؟
اعتبار فقد التأكيد دليلاً على عدم القبول.
كيف تصلحه؟
احفظ الهويات وصالح النتائج غير المؤكدة.
كيف تتجنب تكراره؟
حدد الحالة المعلقة ووثق تعافيها.

اختبر فهمك

1. هل يمكن أن يشير إرجاع mandatory وتأكيد ناشر موجب إلى النشر غير الموجه نفسه؟

اعرض الحل المشروح

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

2. لماذا يحتفظ نموذج المعلق بـevt-c بدلاً من استبداله بمعرف جديد بعد الفشل؟

اعرض الحل المشروح

قد تكون العملية مقبولة بالفعل بينما فقد تأكيدها. تسمح الهوية الثابتة للمحاولة أو المصالحة بتمييز الواقعة المقصودة نفسها. وقد يجعل المعرف الجديد نسخة مكررة تبدو مشروعة. لا ينفذ النموذج تتبعاً دائماً؛ لذا يحتاج التعافي الحقيقي حفظاً مدعوماً وتصميماً لإزالة التكرار في الوجهة.

أهم ما تعلمته

  • تجيب التأكيدات والإرجاعات والنتائج عن أسئلة مختلفة.
  • يحتاج النشر غير المؤكد هوية ثابتة وتتبعاً محدوداً.

المراجع الرسمية