라비트엠큐(Topic)의 주제 모드는 라우팅 모드와 유사하지만, 주제 모드의 라우팅 매칭은 와일드카드로 모호하게 매칭하는 반면, 라우팅 모드는 정확한 매칭만 지원한다.

아키텍처 다이어그램

Topic mode

설명:

  1. P는 프로듀서를 나타내며, X는 익스체인지(Exchange)를 나타내며, 빨간색 Q1, Q2는 큐를 나타내고, C1, C2는 컨슈머(Consumer)를 나타냅니다.
  2. 익스체인지(Exchange) 유형은 주제(Topic)입니다.
  3. 주제(Topic) 익스체인지의 메시지 전달 논리: 메시지의 라우팅 키와 익스체인지의 모든 바인딩들과 와일드카드 모호한 매칭을 통해 일치하면, 메시지를 해당 바인딩된 큐로 보냅니다.

팁: 주제 모드와 직접 모드의 차이는 라우팅 키의 일치 여부에서 와일드카드 모호한 매칭을 지원하는지 여부이며, 그 외의 것들은 동일합니다.

주제가 지원하는 와일드카드는 다음과 같습니다:

  • # (해시)는 하나 이상의 단어에 일치합니다.
  • * (별표)는 단어 하나에만 일치합니다.

예를 들어: 큐 Q1에 바인딩된 라우팅 키 = *.orange.* 큐 Q2에 바인딩된 라우팅 키 = *.*.rabbitlazy.#

만약 메시지의 라우팅 키가 "quick.orange.rabbit"이라면, Q1과 Q2 두 큐에 모두 일치합니다.

팁: 만약 라우팅 키가 어떤 큐와도 일치하지 않는다면, 메시지는 폐기됩니다. 만약 라우팅 키가 비어있다면, 팬아웃(Fanout) 모드와 동일하게 동작하여 모든 큐로 메시지를 직접 전달합니다.

사용 사례

라우팅 모드와 유사하지만, 구독 조건의 유연성에 차이가 있으며, 특히 라우팅 키에 대한 훨씬 유연한 매칭 규칙이 있습니다.