1. Exchange 개념 소개
- RabbitMQ 공식 레퍼런스에서는 Exchange를 메시징 시스템의 핵심 요소로 설명합니다.
- RabbitMQ의 메시징 모델에서 가장 중요한 개념은 생산자(Producer)가 절대 큐에 직접 메시지를 보내지 않는다는 것입니다.
- 이는 AMQP(Advanced Message Queuing Protocol) 프로토콜의 핵심 설계 원칙입니다.
- 이 원칙은 메시지 라우팅의 유연성을 극대화합니다.
- 실제로 생산자는 메시지가 어떤 큐에 전달될지 알지 못하는 경우가 대부분입니다.
- 이러한 디커플링(decoupling)은 시스템의 유연성과 확장성을 높여줍니다.
- 생산자는 오직 Exchange라는 라우팅 컴포넌트에만 메시지를 전달합니다.
Exchange는 메시지 라우팅의 핵심 요소로, 마치 우체국의 역할과 유사합니다. 발신자(Producer)는 편지(메시지)를 우체국(Exchange)에 보내고, 우체국은 주소(라우팅 규칙)에 따라 편지를 적절한 우편함(Queue)에 배달합니다.
2. Exchange의 역할과 기능
-
Exchange는 다음과 같은 핵심 기능을 수행합니다:
- 생산자로부터 메시지를 수신합니다.
- 사전 정의된 규칙에 따라 메시지를 적절한 큐로 라우팅합니다.
- 필요에 따라 메시지를 여러 큐에 복제하여 전달할 수 있습니다.
- 라우팅 조건에 맞지 않는 메시지를 폐기할 수 있습니다.
-
Exchange 선언 예제:
// Exchange 이름과 타입을 지정하여 선언
channel.exchangeDeclare("logs", "fanout");
// 추가 옵션을 포함한 Exchange 선언
channel.exchangeDeclare("persistent_logs", "direct", true); // durable=true