RabbitMQ에는 메시지가 queue로 어떻게 라우팅되는지를 결정하는 여러 exchange 타입이 있습니다 — direct, topic, fanout, headers. 이들을 이해하는 것은 RabbitMQ의 유연한 라우팅의 핵심이며, 다양한 메시징 패턴을 가능하게 합니다.
exchange 타입
DIRECT → routing key의 정확한 일치(EXACT match)로 라우팅:
→ 메시지 routing key = queue binding key → 해당 queue로 전달
→ 용도: key로 특정 queue에 라우팅 (예: 심각도, 타입별)
FANOUT → 바인딩된 ALL queue로 브로드캐스트 (routing key 무시):
→ exchange에 바인딩된 모든 queue가 메시지를 받음 → PUB/SUB (일대다)
→ 용도: 관심 있는 모든 consumer에게 이벤트 브로드캐스트
TOPIC → routing key의 PATTERN 매칭으로 라우팅 (와일드카드):
→ "order.created", "order.*", "*.error" 같은 routing key → 유연한 패턴 라우팅
→ 용도: 와일드카드로 토픽/카테고리별 라우팅 (유연한 pub/sub)
HEADERS → 메시지 HEADER 속성으로 라우팅 (routing key 아님) → 덜 일반적
