Exchange란?
- Exchange는 Producer가 발행한 메세지를 받아서 Routing 규칙을 적용하여 적절한 Queue를 찾고 메세지를 적재합니다.
- Routing 규칙은 Exchange Type과 Routing Key에 의해서 결정됩니다.
- 라우팅 규칙은 크게 Direct, FanOut, Topic, Headers가 존재합니다.
Binding이란?
- Binding은 Producer와 Consumer간 메세지 전달을 담당합니다.
- Binding은 Exchagne와 Queue를 연결하는 규칙입니다. Producer가 메세지를 보내면 Binding 규칙에 의해 어떤 Queue로 전달될지 결정됩니다.
- Binding의 구성요소는 Exchange와 Routing Key를 구성요소로 가지고 전략에 따라 해당 정보를 이용해 Queue를 도출해냅니다.
- Binding 과정에서는 연결할 Exchange의 이름과 메세지를 전달할 Queue의 이름, Routing Key가 필요합니다.
Example
전제 조건
- 현재 내가 개발하고 있는 Application은 A라는 단 하나의 Exchange가 존재한다고 가정하겠습니다.
- A라는 Exchange는 10개의 Queuer가 Binding 되어 있다고 가정하겠습니다.
- 각 Queue는 순서대로 queue.1 - queue.10까지의 Routing Key가 Binding 되어 있다고 가정하겠습니다.
Direct Exchange
- Direct Exchange는 Routing Key를 기반으로 해당 Key와 Binding된 Queue에만 메세지를 전달합니다.
- Producer는 queue.0부터 queue.10까지를 Routing Key로 11번의 메세지를 발행한다고 가정합니다.
- 0번 메세지가 발행될 때, 0번 Routing Key를 가진 Queue가 없기 때문에 해당 메세지는 무시되거나 드롭됩니다.
- 1 - 10번 메세지가 발행될 때마다 Routing Key가 일치하는 Queue에서 한번씩 전달됩니다.
- 따라서 매번 일치하는 1개의 queue에서 10번의 메세지를 처리하여 10번의 메세지가 전달됩니다.
FanOut Exchange
- FanOut Exchange는 Exchange에 Binding된 모든 Queue에 메세지를 전달합니다.
- Producer는 queue.0부터 queue.10까지를 Routing Key로 11번의 메세지를 발행한다고 가정합니다.
- 0 - 10번 메세지가 발행될 때마다 Exchange에 Binding된 모든 Queue에서 한번씩 전달됩니다.
- 따라서 매번 11개의 queue에서 11번의 메세지를 처리하여 110번의 메세지가 전달됩니다.
Topic Exchange
- Topic Exchange는 와일드카드 패턴을 사용하여 더 유연한 라우팅을 가능하게 합니다.
- ‘#’ _와일드카드 패턴과 ‘queue._’ 와일드카드 패턴을 Routing Key로 두번 메세지를 발행한다고 가정합니다.
- ‘#’ 와일드 카드가 발행될 때는 Exchange에 Binding된 모든 Queue가 패턴이 일치하므로 10번이 전달됩니다.
- ‘queue.*’ 와일드 카드가 발행될 때도 Exchange에 Binding된 모든 Queue가 패턴이 일치하므로 10번이 전달됩니다.
- 따라서 총 20번의 메세지가 전달됩니다.
Headers Exchange
- Headers Exchange은 메시지의 헤더 속성을 기반으로 메시지를 라우팅하는 방식입니다.
- 메시지 헤더에 "stock"과 "quantity"와 같은 사용자 정의 속성을 지정하고 발행한다고 가정합니다.
- 0번 메세지가 발행 되었을 때, 0번 Routing Key를 가진 Queue가 없기 때문에 한번은 무시됩니다.
- "x-match" 헤더를 사용하여 조건을 지정하고, 해당 조건에 맞는 Queue에 메시지를 라우팅합니다.
'Queue System' 카테고리의 다른 글
RabbitMQ (4) (0) | 2024.02.17 |
---|---|
RabbitMQ (2) (0) | 2024.01.23 |
RabbitMQ (1) (0) | 2024.01.22 |
Message Queue vs Event Queue (1) | 2024.01.21 |