RabbitMQ / الأساسي: موارد البروتوكول والتوجيه والملكية / الدرس 6
المتانة وأنواع الصفوف وخصائص الرسالة
فصل بقاء التعريفات ودوام الرسائل ونسخ المحتوى والتعافي المستقل.
في هذه الصفحة
أهداف الدرس
- شرح عمر الصف الدائم والحصري والحذف التلقائي.
- مراجعة النوع ودوام الرسالة مع التأكيدات.
لا تسمي durable كل خصائص الأمان
قد يبقى تعريف صف durable بعد إعادة عقدة، بينما يخص دوام الرسالة بياناتها المخزنة وفق نوع الصف وعقد النشر. يعالج النسخ فقد عضو، وتعالج نسخة تعاف مستقلة فئات أعطال أخرى. الخصائص مرتبطة وليست مترادفة. لا ينسخ محتوى صف classic دائم تلقائياً لأن عقدته عضو عنقود. أزيل classic queue mirroring في RabbitMQ 4.0؛ استخدم نموذج quorum أو Streams المختار حين يلزم النسخ. سجل أنواع الفقد المتحملة، ولا تصف أي إعلان durable باستراتيجية نسخ احتياطي كاملة.
تعبر الأعلام المؤقتة عن الملكية والتنظيف
يرتبط الصف exclusive باتصال إعلانه بقيود وصول وعمر. أما auto-delete فيخص التنظيف بعد شروط دورة المستهلك، وليس مؤقتاً عاماً لانتهاء الرسالة. قد تناسب الأعلام اشتراكات مؤقتة، لكنها لا تناسب تراكم عمل دائم مشترك. قد تقلل الأسماء المولدة من الخادم سباقات الصفوف المؤقتة الخاصة بالاتصال. لـquorum قيود دوام وميزات خاصة؛ وقد يفشل نسخ أعلام classic المؤقتة إليه. اختر النوع والملكية أولاً، ثم راجع الخصائص المدعومة، لا خلط الأعلام حتى يقبلها الوسيط.
قراءة عقد إعلان quorum دائم
يصف JSON صف quorum دائماً باسم ثابت، غير حصري وبلا حذف تلقائي. لا يرسل إلى API الإدارة ولا يستورد كتعريفات. نوع الصف خاصية إعلان أساسية؛ وقد يغلق إعلان اسم موجود بخصائص غير متوافقة القناة بـPRECONDITION_FAILED. لا تحذف صفاً ممتلئاً لعلاج ذلك دون خطة ترحيل وتغطية رسائل مراجعة. حدد المالك والإعلان الحالي قبل تغيير عميل. ضع عقد الصف المسمى في توثيق التكامل المشترك، كي تتوافق التطبيقات الناشرة والمستهلكة المنشورة مستقلة.
{"queue":"lab.labels","durable":true,"exclusive":false,"auto_delete":false,"arguments":{"x-queue-type":"quorum"}}
تصف البيانات الإعلان المقصود؛ ولا ينشأ صف أو تتغير بيانات.
تصف الخصائص نية النقل والتطبيق
قد تحمل خصائص AMQP 0-9-1 هوية الرسالة ونوع المحتوى وطلب delivery-mode دائم. يظل الجسم بايتات تطبيق؛ فلا يجعل content_type=application/json الوسيط يتحقق من JSON أو مخطط عمل. يحتاج النشر الدائم ووجهة durable تأكيد ناشر لرصد القبول، ولا يثبتان اكتمال المستهلك. تفرض أنواع صفوف معينة دواماً أقوى؛ فراجع دلالاتها ولا تفترض تماثل الأعلام في كل نوع. أبق الترويسات محدودة وبلا اعتمادات؛ فقد تتحول البيانات الوصفية الكبيرة إلى كلفة ذاكرة وكشف تشخيصي غير متوقعة.
فحص متطلب أمان معلن محلياً
يفحص النموذج المحلي أن سياسة التطبيق المختارة تطلب بنية دائمة ونية نشر دائم وتتبع التأكيد. إنه فحص متطلبات منطقي، لا اختبار قرص أو تعطل. ينبغي للادعاء الفعلي مراعاة توزيع النسخ وسلوك القرص وإتاحة الصف وأدلة التعافي. أدرج فقد كل العقد الأصلية إذا لزم تعاف مستقل؛ فلا يكفي النسخ داخل عنقود وحده. لا يهيئ المقرر تخزيناً أو يعيد عقدة. يتحقق المثال من عقد معطى، ويترك نجاة الرسائل الفعلية وقيود الخدمات المدارة خارج النطاق المنفذ صراحة.
contract = {'durable_topology': True, 'persistent_intent': True, 'track_confirms': True}
assert all(contract.values())
print('declared requirements present')
declared requirements present
توجد الأعلام المختارة؛ ولا تثبت دواماً فيزيائياً أو نسخاً.
الأخطاء الشائعة وإصلاحها
افتراض نسخ محتوى classic لانتمائه لعنقود.
- لماذا يحدث؟
- الخلط بين التعريف والمحتوى.
- كيف تصلحه؟
- راجع نوع الصف أو التدفق المنسوخ.
- كيف تتجنب تكراره؟
- سجل النوع وأدلة النسخ منفصلة.
ظهور PRECONDITION_FAILED عند إعادة الإعلان.
- لماذا يحدث؟
- عدم توافق خصائص الاسم الموجود.
- كيف تصلحه؟
- افحص الملكية وخطط توافقاً أو ترحيلاً.
- كيف تتجنب تكراره؟
- أدر إصدار عقد البنية بين التطبيقات.
استخدام صف حصري مؤقت للتراكم الدائم.
- لماذا يحدث؟
- عدم مواءمة العمر والتعافي.
- كيف تصلحه؟
- اختر صفاً مشتركاً دائماً مدعوماً.
- كيف تتجنب تكراره؟
- اختبر الملكية والتنظيف في مختبر مصرح.
اختبر فهمك
1. هل يثبت content_type=application/json مطابقة جسم الرسالة لمخطط العامل؟
اعرض الحل المشروح
لا. يسمي التمثيل المقصود ولا يتحقق من الحقول أو الوحدات أو الإصدارات. يجب أن يفك التطبيق الجسم ويفحصه وفق عقده. ميز أخطاء المخطط من قبول النقل، كي لا تدخل رسالة دائمة تالفة حلقة محاولات لا تنتهي.
2. هل تستبدل ثلاث نسخ خطة تعاف مستقلة لحذف منطقي عارض؟
اعرض الحل المشروح
ليس تلقائياً. قد يكرر النسخ الحذف نفسه بين الأعضاء. يحتاج التعافي المستقل أدلة أو نسخاً محتفظاً بها بعقد استعادة موثق، مع أهداف الفقد والزمن المقبولين. يعتمد التصميم فئة العطل، لا عدد النسخ وحده.
أهم ما تعلمته
- تغطي المتانة والنسخ والتعافي المستقل أعطالاً مختلفة.
- خصائص الصف عقود توافق لا أعلام تجربة اعتباطية.