RabbitMQ

[RabbitMQ] 4. Routing, Direct Exchange

개구리는 개꿀개꿀 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

같은 바인딩 키를 여러 큐에도 지정 가능하다.


- 최종 구조