-
[RabbitMQ] 4. Routing, Direct ExchangeRabbitMQ 2019. 1. 6. 16:14
이번에는 바인딩을 큐 별로 하나씩 직접 연결하여, 특정 메시지만 선택적으로 받을 수 있는 컨슈머를 만들어본다.
지난 로깅 예제에 추가로, 컨슈머 A는 전체 로그를 콘솔 출력하고, 컨슈머 B는 에러 로그만 파일로 저장해보자.
channel.queueBind(queueName, EXCHANGE_NAME, "black");
지난 시간에 봤었던 Binding은 exchange와 queue의 연결을 지정해줄 수 있는데 마지막 파라미터로 RoutingKey라는게 있었다.
여기의 파라미터는 basicPublish의 routingKey와는 다른것으로 bindingKey로 이해하면 된다고 한다.
bindingKey의 의미는 exchage의 type에 따라 다르게 동작한다.(이전 시간에 했었던 fanout exchage에서는 routingKey를 사용하지 않는다.)
- Direct Exchange
channel.exchangeDeclare(EXCHANGE_NAME, "direct");
exchange type중에 fanout(broadcasting) 말고도 direct라는 타입도 있었다.
이 exchage는 메시지의 routingKey가 exchange에 연결된 큐 중 bindingKey가 같은 큐로만 전송한다.
- Multiple Bindings
같은 바인딩 키를 여러 큐에도 지정 가능하다.
- 최종 구조
'RabbitMQ' 카테고리의 다른 글
[RabbitMQ] 5. Topics, Topic(Pattern) Exchange (0) 2019.01.07 [RabbitMQ] 3. Publish/Subscribe, Fanout(Broadcasting) Exchange (0) 2019.01.05 [RabbitMQ] 2. Work Queues, Qos (0) 2019.01.01 [RabbitMQ] 1. Hello World, basicPublish/basicConsume (0) 2018.12.30