RabbitMQ란?
메시지 브로커이다.
→ 서로 다른 프로그램(서비스)끼리 메시지(데이터/이벤트)를 주고받게 해주는 중간 연결자 역할
핵심 동작 구조
Producer (=발행자)
→ 메시지를 만들어 RabbitMQ의 큐에 전송(publish)
Queue (=대기열)
→ 받은 메시지를 순차적으로 저장
Consumer (=소비자)
→ 큐에 쌓인 메시지를 꺼내서 실제 처리
Ack/Nack(=응답)
→ 소비자가 성공적으로 처리하면 확인(Ack)을 보내고, 실패하면 거부(Nack)를 보내 메시지는 다시 대기 또는 재시도/DeadLetter 처리
아키텍처 개요
회원 서비스(User-Service)에서 회원가입이 발생하면
→ RabbitMQ 큐로 이벤트 메시지 발행
→ 쿠폰 서비스(Order-Service)가 큐에서 메시지를 감지하여 웰컴쿠폰 자동 발급
실시간/비동기로 대용량 트래픽 환경에서도 유실/지연 없이 신뢰성 있게 처리
장애 발생 시 자동 재시도, 에러 이력 기록 등 운영 안정성 극대화
전체흐름
운영적 강점 & 실전 이점
비동기/이벤트 기반 구조로 가입 폭주 || 트래픽 급증 상황에도 서비스 병목 없이 순차적, 신속한 발급 가능
에러 발생 시
→ 최대 10회까지 1시간 간격 자동 재시도 → 일시적 장애에도 실서비스 영향 최소화
→ 모든 장애/실패는 DB에 이력 저장 → 관리자가 원인 추적/재발 방지 용이