نمط توجيه RabbitMQ يشبه بشكل أساسي نمط النشر/الاشتراك، مع الاختلاف في أن نمط النشر/الاشتراك يعيد توجيه الرسائل إلى جميع الصفوف المرتبطة، بينما يقوم نمط التوجيه بإعادة توجيه الرسائل إلى الصف بناءً على تطابق التوجيه.
من منظور البرمجة الخاصة، الفارق بين نمط التوجيه ونمط النشر/الاشتراك يكمن في نوع التبادل المستخدم. يستخدم نمط التوجيه التبادل المباشر.
رسم توضيحي للبنية
الشرح:
- P يمثل المُنتِج، C1 و C2 يمثلان المستهلكين، الصناديق الحمراء تمثل الصفوف، و X يمثل التبادل.
- نوع التبادل هو مباشر.
- منطق إعادة توجيه الرسالة في التبادل المباشر: قارن مفتاح التوجيه في الرسالة بمفاتيح التوجيه المرتبطة بجميع الربطات لهذا التبادل. إذا كانت متساوية، سيتم إرسال الرسالة إلى الصف المقابل لهذا الربط.
على سبيل المثال، في الرسم التوضيحي أعلاه: مفتاح التوجيه لصف Q1 هو orange، ومفاتيح التوجيه لصف Q2 هي black و green. عند إرسال رسالة، إذا كان مفتاح التوجيه للرسالة هو orange، سيتم إعادة توجيهها إلى صف Q1، أما إذا كان مفتاح التوجيه للرسالة هو black أو green، سيتم إعادة توجيهها إلى صف Q2.
حالات الاستخدام
نمط التوجيه هو امتداد لنمط النشر/الاشتراك، لذا حالات الاستخدام تشبه حالات النشر/الاشتراك، مع الفارق في القدرة على تعيين شروط الاشتراك في الرسائل.
على سبيل المثال: في موقع تجارة إلكترونية، هناك أربع مستودعات في شرق الصين، جنوب الصين، شمال الصين، وجنوب غرب الصين، ولكل منها نظام إدارة المستودع المنشور. عندما يقوم المستخدم بطلب شراء، يكون المستودع الأقرب مسؤولاً عن الشحن.
بعدما يقوم مستخدم بتقديم طلب ويتم إنشاء رسالة طلب الشراء، نرغب في إعادة توجيه الرسالة إلى نظام إدارة المستودع الإقليمي المقابل لمعالجتها، ويمكن تحقيق ذلك باستخدام نمط التوجيه.
ربطات مفاتيح التوجيه لصفوف التوصيل التابعة لأنظمة إدارة المستودع الأربعة مثل التالي:
- شرق الصين = east
- شمال الصين = north
- جنوب الصين = south
- جنوب غرب الصين = west
بعدما يقوم مستخدم بتقديم طلب، نحدد إلى أي منطقة ينتمي عنوان المستخدم، نحتسب مفتاح التوجيه، ثم نرسل رسالة الطلب مع مفتاح التوجيه. سيقوم تبادل المباشر في RabbitMQ بإعادة توجيهها إلى الصف المقابل.