심화/MSA

[MSA] RabbitMQ

annovation 2025. 11. 25. 16:03

RabbitMQ

 

💡RabbitMQ 란?

  • 데이터(메시지)를 송신자(프로듀서)로부터 수신자(컨슈머)에게 전달하는 중간 매개체 역할을 하는 메시지 브로커이다.

💡역할

  • 비동기 처리 : 데이터를 비동기적으로 처리하여 시스템의 응답성을 높인다.
  • 부하 분산 : 여러 소비자에게 메시지를 분산시켜 시스템의 부하를 균형 있게 분산한다.
  • 내결함성 : 메시지를 안전하게 저장하여 시스템 장애 시 데이터 손실을 방지한다.

💡기본 구성 요소

  1. 메시지(Message)
    • RabbitMQ를 통해 전달되는 데이터 단위
    • 예를 들어, 사용자 등록 정보나 주문 내역이 메시지가 될 수 있다.
  2. 프로듀서(Producer)
    • 메시지를 생성하고 RabbitMQ에 보내는 역할
    • 예를 들어, 웹 애플리케이션이 사용자 등록 정보를 RabbitMQ에 보내는 경우 프로듀서가 된다.
  3. 큐(Queue)
    • 메시지를 저장하는 장소
    • 메시지는 큐에 저장되었다가 소비자에게 전달된다.
    • 큐는 FIFO(First In, First Out) 방식으로 메시지를 처리한다.
  4. 컨슈머(Consumer)
    • 큐에서 메시지를 가져와 처리하는 역할
    • 예를 들어, 이메일 발송 서비스가 큐에서 사용자 등록 정보를 가져와 환영 이메일을 보내는 경우 컨슈머가 된다.
  5. 익스체인지(Exchange)
    • 메시지를 적절한 큐로 라우팅하는 역할 (중간에 거쳐가는 곳 정도로 일단 이해하기)
    • 프로듀서는 메시지를 직접 큐에 보내지 않고, 익스체인지에 보내며, 익스체인지는 메시지를 적절한 큐로 전달한다.

RabbitMQ와 AMQP

 

💡AMQP 란?

  • RabbitMQ는 AMQP(Advanced Message Queuing Protocol)를 사용한다.
  • AMQP는 메시지 브로커를 위한 프로토콜로, 메시지의 생성, 전송, 큐잉, 라우팅 등을 표준화하여 메시지 브로커가 상호 운용될 수 있게 한다.
  • 여기서 프로토콜(Protocol)은 컴퓨터 네트워크에서 데이터를 주고받기 위한 일련의 규칙과 절차를 말한다. 쉽게 말해, 컴퓨터나 장치들이 서로 통신할 때 어떻게 소통해야 하는지를 정해 놓은 약속이다.

💡AMQP 주요 개념

  1. 메시지(Message)
    • 전송되는 데이터 단위
  2. 큐(Queue)
    • 메시지를 저장하고 전달하는 구조
  3. 익스체인지(Exchange)
    • 메시지를 큐로 라우팅하는 역할
  4. 바인딩(Binding)
    • 익스체인지와 큐를 연결하는 설정
    • 바인딩을 통해 메시지가 어느 큐로 전달될지 정의한다.
    • 바인딩 이름과 큐의 이름은 일치시켜야 헷갈리지 않는다.

Exchange 유형

 

💡Exchange 란?

  • 메시지 브로커가 메시지를 교환기에서 큐로 라우팅하는 방식
  • 익스체인지는 다양한 방식으로 메시지를 라우팅할 수 있으며, 주로 메시지의 라우팅 키와 바인딩 키 또는 패턴을 기반으로 작동한다.

💡유형

  1. Direct Exchange
    • 라우팅 키가 정확히 일치하는 큐로 메시지를 전달한다.
    • 예를 들어, 라우팅 키가 error인 메시지는 error라는 바인딩 키를 가진 큐로 전달된다.
    • 현업에서 가장 많이 사용된다.
  2. Topic Exchange
    • 라우팅 키의 패턴을 사용하여 메시지를 라우팅합니다. 패턴에는 와일드카드 * (단어 하나)와 # (0개 이상의 단어)가 사용된다.
    • 예를 들어, 라우팅 키가 quick.orange.rabbit인 메시지는 바인딩 키가 *.orange.*인 큐로 전달된다.
  3. Fanout Exchange
    • 라우팅 키를 무시하고 교환기에 바인딩된 모든 큐로 메시지를 브로드캐스트한다.
    • 모든 바인딩된 큐로 메시지가 전달된다.
  4. Headers Exchange
    • 라우팅 키 대신 메시지의 헤더를 기반으로 메시지를 라우팅한다.
    • 헤더 값과 바인딩된 헤더 값이 일치하는 큐로 메시지를 전달한다.

출처

https://teamsparta.notion.site/1-6-RabbitMQ-2242dc3ef514817d99e7c4362690564c

 

챕터1-6 : RabbitMQ | Notion

6.1 RabbitMQ란

teamsparta.notion.site