CS 공부/기타

[ETC] RabbitMQ 란 무엇인가?

강_토발즈 2025. 4. 25. 23:01

 

 

 

1. RabbitMQ란?

RabbitMQ는 오픈 소스 메시지 브로커 소프트웨어로, AMQP (Advanced Message Queuing Protocol)를 기반으로 동작한다. 프로듀서(Producer)가 생성한 메시지를 큐에 저장하고, 소비자가 해당 큐에서 메시지를 가져가는 방식으로 작동하여, 애플리케이션 간의 비동기 통신을 지원한다.

 

  • 메시지 브로커(Message Broker):
    → 서로 다른 애플리케이션끼리 데이터를 안전하게 주고받게 해주는 중간 역할.
    줄(Queue)에 데이터를 쌓아두고, 천천히 소비하게 해주는 시스템.
  • 왜 필요할까?
    → 데이터가 몰려도 부하를 조절하고,
    → 서비스 간 속도 차이를 맞춰줌.
    → 데이터 유실 없이 안전하게 전달이 가능하다

 

2. RabbitMQ의 설계 구조


구성요소 설명
Producer (생산자) 메시지를 보내는 쪽
Exchange (교환기) 메시지를 어떤 큐로 보낼지 분배
Queue (큐) 메시지가 줄 서 있는 공간
Consumer (소비자) 메시지를 꺼내서 처리하는 쪽
  • 메시지 흐름:
    ProducerExchangeQueueConsumer

 

3. RabbitMQ가 안정적인 이유 (설계 상 특징)

 

3-1. 메시지를 줄 세운다 (Queue)

  • 순서 보장: 메시지가 차례차례 소비자에게 전달됨.
  • 소비자가 느려도 → 메시지는 큐에 쌓여서 안전하게 대기

3-2. 확인하고 지운다 (ACK 시스템)

  • RabbitMQ는 메시지를 소비자가 처리했는지 확인(ACK)하고,
    → 처리 완료되면 그때서야 삭제.
  • 장애 발생 시
    메시지를 다시 보내줌 (재전송) → 데이터 유실 없음

 

3-3. 다양한 라우팅 (Exchange)

  • Direct: 특정 큐로만 보내기.
  • Fanout: 모든 큐에 뿌리기 (방송).
  • Topic: 키워드 패턴으로 보내기.

→ 메시지를 정확히 필요한 곳으로 분배!

 

4) 병렬 처리 가능 (여러 큐, 여러 소비자)

  • 여러 소비자동시에 처리 가능 → 부하 분산.
  • 메시지가 많아도 → 안정적 처리 유지.

 

4. RabbitMQ의 장점 요약

  • 데이터 유실 없음 → ACK + 재전송
  • 부하 조절 → 큐잉으로 속도 차이 조정
  • 다양한 라우팅 → 시스템 구조 유연
  • 확장성 → 여러 소비자, 여러 큐로 병렬 처리

 

5. 다음 포스팅  RabbitMQ 실습 시작하기

  • Docker로 RabbitMQ 설치
  • 웹 콘솔 접속 → 메시지 흐름 보기
  • 간단한 메시지 전송 실습 (Producer → Queue → Consumer)