MessageBroker - Rabbit , Kafka

2025. 8. 18. 17:04·스프링 | 스프링 부트


1-1. Message Broker

  • messageBroker는 프로듀서와 컨뮤서와는 별개의 서버에 구동된다.
  • borker는 사용자가 원하는걸로 설정하면 됨, Rabbit, Kafka, AWS, Azura 등

producer → messageBroker에 데이터를 보낸다

consumer는 messageBroker를 확인해서 데이터를 가져간다.

messageBroker는 칸막이 ? 같이 나눠져 있기 때문에 괜춘

여러명 → 택배함 → 여러명 이렇게 가면됨

1-2. MessageBroker의 2가지 방식

  • 대표로 Rabbit, Kafka 각각 알아봄

1-2-1 Rabbit

  • 하나 또는 비교적 적은 수의 서버에 설치한다.

⚙️ 사용하는 프로토콜

  • 통신으로 AMQP 프로토콜을 사용한다.

📝 데이터 저장 형태

  • 큐(queue) 형태로 저장
  • 주로 메모리에 저장되기 때문에, 빠르지만 유실될 위험성이 높다.

🏃🏻 동작 과정

선입 선출 기반
  1. 프로듀서가 보낸 데이터를 순서대로 큐 형태로 저장
  2. 컨슈머가 요청하는대로, RabbitMQ가 데이터를 큐에서 빼내서 전송한다.
  • RabbitMQ는 메시지를 받아서 저장도 해주고, 컨슈머가 메시지를 받아갈때마다 데이터를 큐에서 제거도 해준다.

→ 😃 결론

컨슈머는 다른거 고려할 필요 없이 브로커에게 메시지를 요청하기만 하면 된다. ( smart broker , dumb consumer라고 불리기도 함)

1-2-1 Kafka

  • 일반적으로 큰 규모의 클러스터로 운영된다.

⚙️ 사용하는 프로토콜

  • TCP를 기반으로 한 자체적인 프로토콜을 사용한다.

📝 데이터 저장 형태

  • 로그 형태로 저장
  • 데이터가 디스크에 저장돼서 유실로부터 안전함

🏃🏻 동작 과정

디스크에 로그 형태로 저장된다.
  1. 프로듀서가 보낸 메시지가 디스크에 로그 형태로 저장됨
  2. 이 메시지들을 컨슈머가 받아감
더보기

💡

그냥 간단하게, 로직을 처리 하는 애들을 smart 붙이는 것 같음 ⇒ RabbitMQ는 broker가 일하니까 smart broker , dumb consumer

⇒ kafka는 consumer가 일하니까 smart consumer , dumb broker

✅ 둘 다 큐를 "사용"하긴 하지만…

  • RabbitMQ는 고전적인 큐에 가깝고,
  • Kafka는 로그(append-only log) 구조를 큐처럼 쓰는 스트리밍 플랫폼

💡 요약

질문
답변
둘 다 큐 쓰는 거야?
✅ 그렇지만 방식이 다름
RabbitMQ는?
전통적인 큐 기반 메시지 브로커
Kafka는?
로그 기반의 분산 스트리밍 플랫폼 (큐처럼도 쓸 수 있음)



'스프링 | 스프링 부트' 카테고리의 다른 글

[ 프로젝트 고도화 ] : 채팅 메시지 조회 Redis 캐싱 및 락 도입  (3) 2025.08.03
Spring Boot Actuator - Health Endpoint 커스터마이징  (2) 2025.07.31
Spring Boot Actuator - 개념 / 사용  (0) 2025.07.31
[ Spring ] JWT 개념과 기본 구현  (1) 2025.07.25
🔨 @Builder vs @SuperBuilder  (0) 2025.07.25
'스프링 | 스프링 부트' 카테고리의 다른 글
  • [ 프로젝트 고도화 ] : 채팅 메시지 조회 Redis 캐싱 및 락 도입
  • Spring Boot Actuator - Health Endpoint 커스터마이징
  • Spring Boot Actuator - 개념 / 사용
  • [ Spring ] JWT 개념과 기본 구현
Adose
Adose
  • Adose
    도즈의 개발 블로그
    Adose
  • 전체
    오늘
    어제
    • 분류 전체보기 (231)
      • JAVA (22)
      • 스프링 | 스프링 부트 (34)
        • 스프링 시큐리티 (1)
        • 채팅 (1)
      • 스프링 프로젝트 (5)
        • JDBC - 은행앱 구현 (1)
        • Spring Boot - 독서 블로그 프로젝트 (3)
        • 개인 프로젝트 - CoreBrief (1)
      • 가상화 기술 (22)
      • Git (1)
      • 코딩테스트 (47)
        • 프로그래머스 입문 (68)
      • AWS (1)
      • 데이터베이스 (0)
      • CS 공부 (8)
      • 알고리즘, 자료구조 (6)
      • 우테코 프리코스 (7)
      • 트러블 슈팅 (6)
      • 프론트 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 글쓰기
    • 관리
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    LV2
    LV0
    프로그래머스
    코딩테스트
    Spring
    프론트
    jdbc
    test
    LV1
    멋쟁이사자처럼백엔드
    스프링
    Java
    스프링부트
    멋쟁이사자처럼
    springdatajdbc
    자바
    GIT
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Adose
MessageBroker - Rabbit , Kafka
상단으로

티스토리툴바