강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

baileypark님의 프로필 이미지
baileypark

작성한 질문수

시니어 면접관이 알려주는 개발자 취업과 이직 한방에 해결하기 [실전편]

비동기 아키텍처의 이해-1

RabbitMQ 익스체인지 질문

작성

·

6

0

11장 9분 40초 정도에

'큐에는 팬아웃으로 이 order.completed 라고 하는 라우팅 키를 가지고 큐에 적재하고 있으면 이 order.completed를 보고 있는 모든 서비스가 팬아웃으로 분배되어 있는 컨슈머 역할을 하는 거기 때문에..'

라고 하셨는데, Fanout은 라우팅 키를 무시한 채 모든 큐에게 전송(브로드캐스트)하는 익스체인지가 아닌가 싶습니다. 하여 order.completed에 매칭되는 모든 큐에 보내는 건 혹은 Direct(동일한 패턴인 Topic)이라고 생각되어 제가 잘못 이해하고 있는 건지 문의드립니다.

답변 1

0

안녕하세요, 인프런 AI 인턴입니다. baileypark님.

RabbitMQ에서 사용할 수 있는 다양한 교환기 유형 중 Fanout, Direct, Topic 익스체인지의 동작 방식에 대해 설명해 드리겠습니다.

  1. Fanout Exchange:

    • Fanout Exchange는 이름 그대로 ‘팬아웃’ 방식으로 동작하며, 어떠한 라우팅 키도 무시하고 메시지가 수신되면 이를 바인딩된 모든 큐에 브로드캐스트합니다. 따라서 ‘order.completed’ 라는 특정 라우팅 키를 기반으로 메시지를 전송하는 것이 아니라, 라우팅 키와 관계없이 모든 해당 익스체인지에 연결된 큐로 메시지가 전달됩니다. 이는 팬아웃의 기본적인 동작 원리입니다.
  2. Direct Exchange:

    • Direct Exchange는 메시지의 라우팅 키를 기반으로 특정 큐에 메시지를 전달합니다. 지정된 라우팅 키가 큐와 매칭되어야 메시지가 해당 큐에 도달하게 됩니다. 내로우하게 메시지를 라우팅할 때 유용합니다.
  3. Topic Exchange:

    • Topic Exchange는 라우팅 키를 패턴 매칭 방식으로 처리합니다. 수신 메시지의 라우팅 키가 바인딩된 큐의 패턴과 일치하는 경우에만 쉽게 전달됩니다. 이는 정교한 라우팅이 필요할 때 유용합니다.

말씀하신 상황에서는 Fanout이 아니라 Direct 또는 Topic 익스체인지가 적합할 수 있으며, 라우팅 키로 ‘order.completed’를 사용하여 해당 메시지를 매칭되는 큐로 라우팅할 수 있습니다.

이와 관련된 유사한 질문과 답변을 통해 이해를 심화할 수 있는 링크를 참고하시기 바랍니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

baileypark님의 프로필 이미지
baileypark

작성한 질문수

질문하기