RabbitMQ có một số loại exchange quyết định cách message được định tuyến đến queue — direct, topic, fanout, và headers. Hiểu chúng là chìa khóa cho khả năng định tuyến linh hoạt của RabbitMQ, cho phép các mẫu messaging khác nhau.
Các loại exchange
DIRECT → định tuyến theo khớp CHÍNH XÁC routing key:
→ routing key của message = binding key của queue → được phân phối đến queue đó
→ dùng cho: định tuyến đến queue cụ thể theo một key (vd: định tuyến theo mức độ, loại)
FANOUT → broadcast đến TẤT CẢ queue đã bind (bỏ qua routing key):
→ mọi queue bind vào exchange đều nhận message → PUB/SUB (một-tới-nhiều)
→ dùng cho: broadcast sự kiện đến tất cả consumer quan tâm
TOPIC → định tuyến theo khớp MẪU trên routing key (wildcard):
→ routing key như "order.created", "order.*", "*.error" → định tuyến theo mẫu linh hoạt
→ dùng cho: định tuyến theo topic/danh mục với wildcard (pub/sub linh hoạt)
HEADERS → định tuyến theo thuộc tính HEADER của message (không phải routing key) → ít phổ biến
