
1. RabbitMQ란?
RabbitMQ는 오픈 소스 메시지 브로커 소프트웨어로, AMQP (Advanced Message Queuing Protocol)를 기반으로 동작한다. 프로듀서(Producer)가 생성한 메시지를 큐에 저장하고, 소비자가 해당 큐에서 메시지를 가져가는 방식으로 작동하여, 애플리케이션 간의 비동기 통신을 지원한다.
- 메시지 브로커(Message Broker):
→ 서로 다른 애플리케이션끼리 데이터를 안전하게 주고받게 해주는 중간 역할.
→ 줄(Queue)에 데이터를 쌓아두고, 천천히 소비하게 해주는 시스템. - 왜 필요할까?
→ 데이터가 몰려도 부하를 조절하고,
→ 서비스 간 속도 차이를 맞춰줌.
→ 데이터 유실 없이 안전하게 전달이 가능하다
2. RabbitMQ의 설계 구조
| 구성요소 | 설명 |
| Producer (생산자) | 메시지를 보내는 쪽 |
| Exchange (교환기) | 메시지를 어떤 큐로 보낼지 분배 |
| Queue (큐) | 메시지가 줄 서 있는 공간 |
| Consumer (소비자) | 메시지를 꺼내서 처리하는 쪽 |
- 메시지 흐름:
→ Producer → Exchange → Queue → Consumer
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)
'CS 공부 > 기타' 카테고리의 다른 글
| [CS] Liquibase 란 무엇인가? (0) | 2025.05.14 |
|---|---|
| [기타 CS] NVIDIA 그래픽카드 상태 모니터링 해보기 (0) | 2025.05.13 |
| [DB] Redis 심화 학습 - 메시지큐 시뮬레이션 (0) | 2025.04.24 |
| [DB] Redis DB 개념과 특징, 설치까지 (0) | 2025.04.23 |
| [기타CS] EMS 란 무엇인가? (2) | 2025.04.16 |