일반적인 메시징 시스템 아키텍처
우선, 일반적인 메시징 시스템 아키텍처를 살펴봅시다.
- Producer(생산자): 메시지를 생성하고 보냅니다.
- Consumer(소비자): 메시지를 읽어들이고 처리합니다.
- Message Broker(메시지 브로커): Producer와 Consumer 사이에서 메시지를 중계합니다.
흐름: Producer는 메시지를 브로커로 보내고, Consumer는 브로커에서 메시지를 읽습니다.
이것이 일반적인 메시징 시스템의 구조입니다.
RabbitMQ 메시징 시스템 아키텍처
RabbitMQ 아키텍처에서는 위 구조에 추가적으로 Exchange(교환기)라는 컴포넌트가 있습니다.
RabbitMQ의 흐름은 다음과 같습니다
- Producer가 메시지를 Exchange에 보냅니다.
- Exchange는 메시지를 적절한 Queue(큐)로 라우팅합니다.
- Consumer는 해당 Queue에서 메시지를 읽어 처리합니다.
👉 기본 구조는 간단하지만, 복잡한 애플리케이션에서는 여러 개의 큐를 생성해야 할 수 있습니다.
RabbitMQ 아키텍처(다중 큐)
RabbitMQ에서 여러 큐를 사용하는 아키텍처는 아래와 같은 구조를 가집니다:
- Producer는 Exchange에 메시지를 보냅니다.
- Exchange는 Routing Key(라우팅 키)를 사용해 메시지를 적절한 큐로 라우팅합니다.
- Consumer는 각각의 큐에서 메시지를 읽어 처리합니다.
👉 중요 포인트: Exchange는 RabbitMQ 아키텍처에서 핵심적인 역할을 하며, 메시지를 올바른 큐로 라우팅합니다.
예시: RabbitMQ 아키텍처 동작 원리
예제를 통해 동작 방식을 살펴봅시다.
RabbitMQ 아키텍처에 Queue1, Queue2, Queue3가 있다고 가정해 보겠습니다.
메시지를 Queue3으로 보내기
- Producer는 Routing Key: 3을 포함한 메시지를 Exchange에 보냅니다.
- Exchange는 이 Routing Key: 3을 확인하고 메시지를 Queue3으로 라우팅합니다.
메시지를 Queue1으로 보내기
- Producer는 Routing Key: 1을 포함한 메시지를 Exchange에 보냅니다.
- Exchange는 Routing Key: 1을 확인하고 메시지를 Queue1으로 라우팅합니다.
👉 Binding(바인딩):
Exchange와 Queue 간의 연결(바인딩)은 Routing Key를 통해 설정됩니다.
이 연결이 있어야 Exchange가 메시지를 올바른 Queue로 라우팅할 수 있습니다.