-
RabbitMQ의 Exchange카테고리 없음 2021. 4. 22. 16:54
RabbitMQ는 메시지 브로커 시스템으로, 메시지를 생산자(Producer)로부터 소비자(Consumer)에게 전달하는 데 사용된다. 이 과정에서 Exchange는 중요한 역할을 한다. RabbitMQ의 다양한 Exchange 타입과 그 동작 원리에 대해 알아보자.
Exchange란?
Exchange는 생산자로부터 받은 메시지를 적절한 큐(Queue)로 라우팅해주는 역할을 한다. 각 Exchange는 고유의 라우팅 메커니즘을 가지고 있으며, 이를 통해 메시지가 정확한 큐로 전달된다. RabbitMQ에서는 주요 Exchange 타입으로 Direct, Topic, Fanout, Headers가 있다.
1. Direct Exchange
Direct Exchange는 라우팅 키(Routing Key)를 기반으로 메시지를 큐에 전달한다. 메시지의 라우팅 키와 큐의 바인딩 키(Binding Key)가 정확히 일치할 때만 메시지가 전달된다.
예를 들어, 라우팅 키가 "pdf_create"인 메시지는 "pdf_create" 키로 바인딩된 큐에만 전달된다.
2. Topic Exchange
Topic Exchange는 라우팅 키의 패턴을 기반으로 메시지를 큐에 전달한다. 라우팅 키는 점(.)으로 구분된 단어들로 구성되며, 와일드카드 문자인 *(하나의 단어 대체)와 #(0개 이상의 단어 대체)를 사용할 수 있다.
예를 들어, 라우팅 키가 "animal.rabbit.white"인 메시지는 "animal.#"나 "animal.*.white" 패턴으로 바인딩된 큐로 전달된다.
3. Fanout Exchange
Fanout Exchange는 라우팅 키와 상관없이 메시지를 모든 바인딩된 큐에 전달한다. 이는 브로드캐스트 방식으로, 모든 큐로 메시지를 전파한다.
예를 들어, 팬아웃 익스체인지는 스포츠 뉴스나 날씨 알림과 같이 모든 소비자가 동일한 메시지를 받아야 할 때 유용하다.
4. Headers Exchange
Headers Exchange는 라우팅 키 대신 메시지 헤더의 속성값을 기반으로 메시지를 라우팅한다. 메시지 헤더에 설정된 조건과 큐에 설정된 조건이 일치할 때 메시지가 전달된다. 복잡한 라우팅 규칙이 필요할 때 사용된다.
예를 들어, 메시지 헤더에 "format=pdf"와 "type=report"가 포함된 경우, 이러한 조건을 만족하는 큐로 메시지가 전달된다.
RabbitMQ의 Exchange는 메시지를 큐로 라우팅하는 중요한 역할을 한다. 각 Exchange 타입은 특정한 라우팅 메커니즘을 가지고 있어 다양한 메시지 전달 시나리오를 지원한다. Direct, Topic, Fanout, Headers Exchange의 특성을 이해함으로써, 메시지 브로커 시스템을 효과적으로 활용할 수 있다.
참고
https://www.cloudamqp.com/blog/part4-rabbitmq-for-beginners-exchanges-routing-keys-bindings.html
Part 4: RabbitMQ Exchanges, routing keys and bindings - CloudAMQP
Learn about the different types of exchanges in RabbitMQ and scenarios for how and when you should use exchanges.
www.cloudamqp.com