RabbitMQ

HwanJung·2026년 2월 3일

RabbitMQ

목록 보기
1/2

RabbitMQ

: AMQP(Advanced Message Queuing Protocol) 표준을 따르는 오픈소스 메시지 브로커

Producer가 해야 할 일(메시지)을 브로커에 넣으면 Consumer가 메시지를 가져가서 처리한다.

목적

  1. 비동기 처리

    : 요청을 큐에 쌓아 나중에 처리할 수 있다.

  2. 서비스 분리

    : 각 서비스는 서로의 구현에 대한 이해가 없어도 된다.

  3. 과부하 방지

    : 메시지가 밀리면 큐에 쌓아 놓고 Consumer를 늘려 처리량을 증가시킨다.

구성 요소

1) Producer

: 메시지를 발행한다.

2) Consumer

: 메시지를 소비해 처리한다.

3) Queue

: 메시지가 쌓이는 저장소

Consumer는 Queue에서 메시지를 가져간다.

4) Exchange

: 메시지를 어떤 큐로 보낼지 라우팅한다.

Producer는 메시지를 Queue로 직접 보내지 않고, Exchange로 보내 Exchange가 규칙에 따라 Queue로 라우팅한다.

5) Binding

: Exchange와 Queue를 라우팅 규칙에 따라 연결하는 것

Exchange는 메세지에 붙는 분류 라벨인 Routing Key를 보고 어떤 Queue로 보낼 지 결정한다.

Exchange의 종류

1) Direct Exchange

: Routing Key가 정확히 일치하는 큐로 보낸다.

예) Routing Key: error, info, warning

2) Topic Exchange

: Routing Key의 패턴과 매칭된 큐로 보낸다.

예) Routing Key: exampl.orange.rabbit

3) Fanout Exchange

: Exchange에 연결된 모든 큐로 보낸다.

예)

특징

1) 메세지 전달 보장

메세지가 전달되었을 때 큐에서 사라진다. 이를 ACK으로 구현한다.

Ack

: Consumer가 메세지를 받아 처리한 뒤 보내는 신호

  • 성공했다면 RabbitMQ에게 ACK을 보낸다.
  • 실패했다면 RabbitMQ에게 NACK을 보낸다.

2) 부하 분산

큐 하나가 있고 부하가 발생해 메세지가 쌓이면 Consumer를 여러개 두어 처리량을 늘린다. 이로 인해 트래픽의 정도에 따라 처리량을 조절할 수 있다. 하나의 메시지를 여러 Consumer에게 동시에 보내는 구조가 아니다.

0개의 댓글