โหมดของหัวข้อของ RabbitMQ คล้ายกับโหมดการเรียกแบบ routing แต่ความแตกต่างคือในโหมดหัวข้อ การจับคู่ของการเรียกการเรียกรอบระกำสนับสนุนการจับคู่แบบขยายในขณะที่โหมดการเรียกการเรียกรอบระกำสนับสนุนการจับคู่แบบแม่นยำเท่านั้น

แผนภาพโครงสร้าง

โหมดหัวข้อ

คำอธิบาย:

  1. P แทนผู้ผลิต, X แทนแลกเปลี่ยน, และ Q1, Q2 แทนคิว, C1, C2 แทนผู้บริโภค
  2. ประเภทแลกเปลี่ยนคือโหมดหัวข้อ
  3. ตรรกะการส่งข้อความของแลกเปลี่ยนทวิพเหมือนกับการจับคู่โดยใช้ Routing key ในข้อความกับ Routing keys ที่เกี่ยวข้องกับการผูกทั้งหมดของแลกเปลี่ยนผ่านการจับคู่แบบขยาย และหากมีการจับคู่ ก็จะส่งข้อความไปที่คิวที่ผูก

เคล็ดลับ: ความแตกต่างระหว่างโหมดหัวข้อและโหมดตรงอยู่ที่ว่าการจับคู่ของ Routing key รอบระกำสนับสนุนการจับคู่แบบขยาย ทุกอย่างอื่นเหมือนเดิม

เครื่องหมายว่าที่รองรับโดยโหมดหัวข้อมีดังนี้:

  • # (เครื่องหมายแฮช) จับคู่หนึ่งคำหรือมากกว่า
  • * (เครื่องหมายดอกจัน) จับคู่เพียงคำเดียว

ตัวอย่าง: Routing key ที่ผูกกับคิว Q1 = *.orange.* Routing key ที่ผูกกับคิว Q2 = *.*.rabbit และ lazy.#

หาก Routing key ของข้อความคือ "quick.orange.rabbit" จะตรงกับทั้งสองคิว Q1 และ Q2

เคล็ดลับ: หาก Routing key ไม่ตรงกับคิวใดๆ ข้อความจะถูกทอดทิ้ง หาก Routing key เป็นโล่ จะใช้งานเหมือนโหมดแฟนเอาท์และส่งข้อความตรงไปยังทุกๆ คิวโดยตรง

กรณีการใช้งาน

คล้ายกับโหมดการเรียกแบบ routing ความแตกต่างอยู่ที่ความยืดหยุ่นของเงื่อนไขการสมัครสมาชิกโดยเฉพาะกฎการจับคู่ที่ยืดหยุ่นมากขึ้นสำหรับ Routing key