Der RabbitMQ-Topic-Modus ähnelt dem Routing-Modus, aber der Unterschied besteht darin, dass das Routing-Matching des Topic-Modus Wildcard-Fuzzy-Matching unterstützt, während der Routing-Modus nur exaktes Matching unterstützt.

Architekturdiagramm

Topic-Modus

Erklärung:

  1. P steht für den Produzenten, X steht für den Austausch, und die roten Q1, Q2 stehen für die Warteschlangen, C1, C2 stellen die Verbraucher dar.
  2. Der Austauschtyp ist topic.
  3. Die Logik für die Weiterleitung von Topic-Austauschnachrichten: Es gleicht den Routing-Schlüssel in der Nachricht mit den Routing-Schlüsseln ab, die allen Bindungen des Austauschs durch Fuzzy-Matching zugeordnet sind, und wenn ein Treffer vorliegt, sendet es die Nachricht zur gebundenen Warteschlange.

Tipp: Der Unterschied zwischen dem Topic-Modus und dem Direkt-Modus liegt darin, ob das Matching des Routing-Schlüssels Wildcard-Fuzzy-Matching unterstützt, alles andere ist gleich.

Die von "topic" unterstützten Platzhalter sind wie folgt:

  • # (Hash) passt zu einem oder mehreren Wörtern
  • * (Stern) passt nur zu einem Wort

Zum Beispiel: Der an die Warteschlange Q1 gebundene Routing-Schlüssel = *.orange.* Der an die Warteschlange Q2 gebundene Routing-Schlüssel = *.*.rabbit und lazy.#

Wenn der Routing-Schlüssel der Nachricht "quick.orange.rabbit" lautet, passt er zu den Warteschlangen Q1 und Q2.

Tipp: Wenn der Routing-Schlüssel nicht zu einer Warteschlange passt, wird die Nachricht verworfen. Wenn der Routing-Schlüssel leer ist, funktioniert er genauso wie der Fanout-Modus und leitet die Nachricht direkt an alle Warteschlangen weiter.

Anwendungsfall

Wie beim Routing-Modus liegt der Unterschied in der Flexibilität der Abonnementbedingungen, insbesondere den flexibleren Matching-Regeln für den Routing-Schlüssel.