نمط الـTopic في RabbitMQ مشابه لنمط التوجيه (Routing)، ولكن الفارق يكمن في أن تطابق التوجيه في نمط الـTopic يدعم البحث الضبابي باستخدام الرموز البارزة، بينما يدعم نمط التوجيه (Routing) فقط التطابق الدقيق.
مخطط البنية
الشرح:
- P تمثل المُنتِج (المُصِنِع)، X يمثل التبادُل (الإكسشينج)، والأحمر Q1، Q2 يمثلان الطوابُير، C1، C2 يُمثلان المُستهلِكَين.
- نوع التبادُل (الإكسشينج) هو نوع الـTopic.
- منطق توجيه رسالة التبادُل الـTopic: يُطابق مُفتاح التوجيه في الرسالة مع مُفاتيح التوجيه المُرتبطَة مع جميع الربَطات (البِنْدِينجز) للتبادُل من خلال البحث الضبابي، وإذا كان هنالك تطابُق، يُرسِل الرسالة إلى الطابور المُرتبط.
نصيحة: الفارق بين نمط الـTopic والنمط المُباشر (Direct) هو ما إذا كان تطابق مُفتاح التوجيه يدعم البحث الضبابي بِاستخدام الرموز البارزة، كل شيء آخر مُتشابِه.
الرموز البارزة المدعومة بواسطة الـTopic هي كالتالي:
-
#
(الهاش) يُطابق كلمة واحدة أو أكثر -
*
(النجمة) يُطابق كلمة واحدة فقط
على سبيل المثال:
مُفتاح التوجيه المُرتبط بالطابور Q1 = *.orange.*
مُفتاح التوجيه المُرتبط بالطابور Q2 = *.*.rabbit
و lazy.#
إذا كان مُفتاح توجيه الرسالة هو "quick.orange.rabbit"، فإنه يُطابق كلا الطوابير Q1 و Q2.
نصيحة: إذا لم يتطابق مُفتاح التوجيه مع أي طابور، سيتم تجاهل الرسالة. إذا كان مُفتاح التوجيه فارغًا، فإنه يعمل بنفس الطريقة التي يعمل بها نمط الانتشار (Fanout) ويُوجِه الرسالة بشكل مُباشر إلى كل الطوابير.
حالة الاستخدام
مشابهة لنمط التوجيه (Routing)، إذا كان الفارق يكمن في مرونة شروط الاشتراك، على وجه الخصوص في قواعد التطابق المرنة لمُفتاح التوجيه.