CS 정리

큐잉(Queuing)과 라우팅(Routing)

문쿼리 2025. 9. 22. 22:21

큐잉 (Queuing)

메시지를 안전하게 저장하고, 소비자가 처리할 때까지 순서대로 보관·전달하는 것.

  • 포인트
    • 생산자(Producer)가 메시지를 브로커에 보냄 → 큐(Queue)에 쌓임
    • 소비자(Consumer)가 큐에서 메시지를 가져가 처리
    • 메시지는 소비자가 확인(200 ack)해야 큐에서 제거됨
    • 처리 실패 시 재전송 가능 (retry, dead-letter queue 활용)
  • 예시
    • 사용자가 주문 취소 요청 → 명령 메시지가 큐에 저장
    • Command Service가 이 큐를 구독 → 순차적으로 처리

 

라우팅 (Routing)

메시지를 어떤 큐에 보낼지 결정하는 규칙

  • RabbitMQ에서 Exchange → Queue 바인딩 규칙을 기반으로 동작
  • 라우팅 유형
    1. Direct Routing : 라우팅 키 = 큐 키워드 일치 시 전달
    2. Fanout Routing : 모든 큐에 메시지 복제(브로드캐스트)
    3. Topic Routing : 와일드카드 기반(예: device.*.status 규칙의 큐로 전달)
    4. Headers Routing : 메시지 헤더 값 기반 라우팅 (예: {"city": "Seoul"}인 메시지는 SeoulQueue로만 전달)
  • 메시지 유형별 적용 포인트
    • Telemetry 데이터 → 대량/지속적 스트리밍 → 전용 처리 파이프라인
    • Command 메시지 → 즉시 처리 & 응답 필수 → 안정적인 큐 처리
    • Fanout 메시지 → 여러 소비자에게 브로드캐스트 (예: 운영자가 지도에서 “모든 기기 상태” 확인)

 

비교

구분 큐잉 (Queuing) 라우팅 (Routing)
목적 메시지를 보관·순서 전달 메시지를 어떤 큐로 보낼지 결정
관점 소비자 처리 보장 메시지 분배 규칙
보장 Ack/Nack, Retry, DLQ Exchange → Queue 매핑
비유 “택배 상자가 물류창고에 줄지어 대기” “주소 보고 어느 택배차에 실을지 결정”
Micro Mobility 예시 잠금 해제 명령 큐에서 순차 처리 기기 상태는 모니터링/분석 큐 모두로 전달

 


요약!

  • 큐잉 = 메시지를 안전하게 쌓아두고 소비자가 순서대로 처리하도록 보장
  • 라우팅 = 메시지를 올바른 큐(혹은 여러 큐)로 분배하는 규칙

'CS 정리' 카테고리의 다른 글

논동기와 비블로킹  (1) 2025.09.05
동기(Synchronous) & 비동기(Asynchronous)  (0) 2025.09.03
블로킹(Blocking) & 논블로킹(Non-Blocking)  (0) 2025.09.02
Feign 사용해보기  (1) 2025.08.11
Java + Kotlin 혼용 개발  (0) 2025.07.31