Exchanges & Routing
routing คือหน้าที่ทั้งหมดของ exchange
หัวข้อที่มีชื่อว่า “routing คือหน้าที่ทั้งหมดของ exchange”exchange ไม่เก็บอะไรเลย หน้าที่เดียวของตัวเองคือ routing: รับ message ที่ publish เข้ามาแล้วตัดสินใจว่า queue ไหนบ้างจะได้ copy ไป วิธี ที่ตัดสินใจถูกกำหนดโดย type ของ exchange เข้าใจทั้ง 4 type แล้วคุณจะออกแบบ topology ของ message flow ได้แทบทุกรูปแบบ
โมดูลนี้ครอบคลุมอะไรบ้าง
หัวข้อที่มีชื่อว่า “โมดูลนี้ครอบคลุมอะไรบ้าง”| บทเรียน | exchange ตัดสินใจจาก… |
|---|---|
| Direct exchange | routing key ที่ตรงกัน เป๊ะ ๆ |
| Fanout exchange | ไม่ดูอะไรเลย — copy ไปทุก queue ที่ bind อยู่ |
| Topic exchange | การ match pattern ของ routing key แบบ dotted |
| Headers & choosing | header ของ message พร้อมคู่มือเลือก type |
ทั้ง 4 type แบบรวบรัด
หัวข้อที่มีชื่อว่า “ทั้ง 4 type แบบรวบรัด”flowchart TB msg["message routing key: order.created"] --> direct["direct match key เป๊ะ"] msg --> fanout["fanout ไม่ดู key, copy ทุกตัว"] msg --> topic["topic match key pattern"] msg --> headers["headers match จากค่า header"]
โมเดลในหัวที่ให้ถือติดตัวไปทั้งโมดูล:
- message ทุกตัวพก routing key (string อย่าง
order.created) และ header (ถ้ามี) ไปด้วยเสมอ - binding แต่ละเส้นจาก exchange ไป queue อาจพก binding key (หรือ pattern หรือเงื่อนไข header) มาด้วย
- exchange type คือ กฎ ที่เอา message มาเทียบกับ binding เพื่อเลือก queue
ที่เหลือ — pub/sub, การกระจายงาน, การ filter event — ก็แค่การเลือก exchange type บวกกับ binding ไม่กี่เส้น