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

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

المبادلات والصفوف والروابط والتوجيه

تصميم قواعد التوجيه من احتياجات المشتركين وتمييز اسم المبادل عن وجهة الصف.

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

أهداف الدرس

  • مقارنة دلالات المبادل المباشر والتعميم والموضوعي.
  • شرح توجيه المبادل الافتراضي وملكية البنية.

يطبق المبادل قواعد الروابط

يرسل الناشر إلى مبادل مع مفتاح توجيه؛ ويحدد نوع المبادل وروابطه صفوف الوجهة. لا يصبح المفتاح تلقائياً اسم صف، إلا وفق اتفاقات خاصة مثل المبادل الافتراضي. يطابق المبادل المباشر مفاتيح الربط تماماً، ويتجاهل fanout المفتاح ويوجه إلى الوجهات المرتبطة، ويطابق topic أنماطاً مفصولة بالنقاط. اختر وفق احتياجات المشتركين الفعلية. ينشئ صف لكل نسخة عامل علاقة تسليم مختلفة عن عدة عمال يتقاسمون صف خدمة واحداً، حتى إذا تشابهت أسماء الصفوف في الواجهة.

تطابق البدائل كلمات لا أجزاء اعتباطية

في ربط topic، تطابق * كلمة واحدة بالضبط مفصولة بالنقاط، وتطابق # صفراً أو أكثر من الكلمات. لذلك يطابق parcel.accepted النمط parcel.*، بينما يحتاج مفتاح من ثلاث كلمات نمطاً ملائماً أو #. لا تخلط هذه القواعد بأنماط الملفات أو التعبيرات النظامية. يستخدم JSON نمط parcel.* لأحداث الطرود الثنائية وaudit.# لعائلة تدقيق قابلة للامتداد. قد ينقل ربط # واسع حركة أكثر من المتوقع؛ فراجع غرض المشترك وحد كشف البيانات قبل اختياره للتسهيل.

json تصميم توجيه موضوعي اصطناعي
{"exchange":"lab.events","type":"topic","bindings":[{"queue":"lab.parcel-view","routing_key":"parcel.*"},{"queue":"lab.audit-view","routing_key":"audit.#"}]}

تستخدم الأنماط كلمات AMQP؛ وليست وثيقة استيراد تعريفات كاملة.

للمبادل الافتراضي توجيه خاص

يوجد المبادل الافتراضي باسم نشر فارغ. ينشئ إعلان الصف ربطه التلقائي باستخدام اسم الصف مفتاحاً، فيسمح بنشر يبدو مباشراً للصف مع بقاء مبادل في المسار. ليس مبادلاً تطبيقياً اسمه default، ولا يعد amq.default اسم نشره. استخدم مبادلاً مباشراً مسمى منفصلاً للروابط المخصصة المعتادة، بدلاً من اعتبار هذا المبادل الخاص جدول توجيه عاديّاً. قد يغلق غياب مبادل تطبيق القناة؛ ويختلف ذلك عن وجود مبادل لا يطابق أي رابط، وهي حالة عدم توجيه.

توقع التوجيه المباشر من روابط معطاة

يربط القاموس المحلي مفتاحين مطابقين بقوائم وجهات. يختار نشر parcel.accepted صف labels، ولا يجد parcel.unknown وجهة. لا ينفذ النموذج توجيهاً بين المبادلات أو مبادلات بديلة أو صلاحيات؛ بل يفحص القاعدة المباشرة المعلنة فقط. قد تشترك صفوف متعددة بمفتاح ربط واحد وتتلقى كل منها نسخة. وضح ملكية البنية كي لا يغير تطبيق عقد مشترك آخر بصمت. أعلن الموارد الدائمة باتساق، وراجع خطأ تكافؤ الخصائص بدلاً من حذف صف موجود لمجرد إنجاح الإعلان.

python بحث توجيه مباشر محلي
bindings = {'parcel.accepted': ['labels'], 'parcel.sorted': ['sorting-audit']}
assert bindings.get('parcel.accepted', []) == ['labels']
assert bindings.get('parcel.unknown', []) == []
print(bindings.get('parcel.accepted', []))
الناتج المتوقع
['labels']

يختار المفتاح المعطى المطابق labels؛ ولا يتصل بمبادل.

التحقق من التسليم والغياب المقصودين

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

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

افتراض تسمية المفتاح صفاً في كل مبادل.

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

عدم مطابقة parcel.* مفتاحاً ثلاثياً.

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

تلقي خدمة نسخاً تخص مشتركاً آخر.

لماذا يحدث؟
تغيير رابط واسع أو زائد للعقد.
كيف تصلحه؟
راجع الملكية وضيق الاشتراك المعتمد.
كيف تتجنب تكراره؟
تحقق من الوصول والغياب المتوقعين.

اختبر فهمك

1. هل يمنع غياب مستهلك نشط عن الصف توجيه المبادل رسالة إليه؟

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

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

2. لماذا لا يكفي اختبار مفتاح ناجح واحد لاشتراك topic؟

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

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

أهم ما تعلمته

  • يحدد نوع المبادل وروابطه التوجيه.
  • نجاح التوجيه وتقدم المستهلك حقيقتان منفصلتان.

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