Kafka는 전통적인 메시지 큐(RabbitMQ 등)와 핵심적인 면에서 다릅니다 — 분산 로그로서 이벤트를 (소비 시 삭제하지 않고) 보존하고, 재생을 지원하며, 매우 높은 처리량을 제공하고, 풀(pull) 기반의 partition 기반 모델을 사용합니다. 이 차이를 이해하면 각각을 언제 사용할지 명확해집니다.
핵심 차이
전통적 큐(예: RabbitMQ) → 메시지는 일반적으로 소비되면 삭제됨:
→ 메시지가 consumer로 가고 제거됨(일시적)
→ 종종 push 기반; 풍부한 라우팅; 메시지별 acknowledgment
KAFKA → 내구성 있고 보존되는 LOG:
→ 이벤트가 STORE됨(일정 기간 보존), 소비 시 삭제되지 않음
→ 여러 consumer/group이 같은 이벤트를 독립적으로 읽을 수 있음
→ REPLAY → 과거 이벤트 다시 읽기(어떤 offset으로든 되감기)
→ pull 기반; partition 기반 순서와 확장; 매우 높은 처리량
