Einleitung: In RabbitMQ werden alle von Produzenten eingesandten Nachrichten von Exchange akzeptiert, das sie dann gemäß einer bestimmten Richtlinie an die Warteschlange zur Speicherung weiterleitet RabbitMQ bietet vier Arten von Exchanges: Fanout, Direct, Thema und Header Der Header-Modus wird in der Praxis weniger genutzt, und dieser Artikel vergleicht nur die ersten drei Modi.
1. Direkter Austausch
Alle an Direct Exchange gesendeten Nachrichten werden an die im RouteKey angegebene Warteschlange weitergeleitet.
1. Im Allgemeinen können Sie die Exchange verwenden, die mit rabbitMQ geliefert wird:" (der Name der Exchange ist eine leere Zeichenkette, im Folgenden als Standard-Exchange bezeichnet).
2. In diesem Modus müssen keine Bindungsoperationen auf Exchange durchgeführt werden
3. Ein "RouteKey" ist für Nachrichten erforderlich, was einfach als Name der zu senden Warteschlange verstanden werden kann.
4. Wenn der im RouteKey angegebene Warteschlangenname im vhost nicht existiert, wird die Nachricht verworfen.
2. Fanout-Austausch
Alle Nachrichten, die an die Fanout-Börse gesendet werden, werden an alle an diesen Austausch gebundenen Warteschlangen weitergeleitet.
1. Sie kann als Muster der Routing-Tabelle verstanden werden
2. Dieser Modus erfordert keinen RouteKey
3. Dieser Modus erfordert, Exchange im Voraus an die Warteschlange zu binden, eine Exchange kann mehrere Warteschlangen binden, und eine Warteschlange kann an mehrere Exchanges gebunden werden.
4. Wenn die Börse, die die Nachricht empfangen hat, an keine Warteschlange gebunden ist, wird die Nachricht verworfen.
3. Themenaustausch
Alle Nachrichten, die an den Topic Exchange gesendet werden, werden an alle Warteschlangen weitergeleitet, die sich für die im RouteKey angegebenen Themen interessieren
1. Dieses Muster ist einfach komplexer: Jede Warteschlange hat ihr eigenes Thema, alle Nachrichten haben einen "Titel" (RouteKey), und Exchange leitet die Nachricht an alle Warteschlangen weiter, die dem RouteKey des betreffenden Themas ungefähr entsprechen können.
2. Dieser Modus erfordert einen RouteKey, möglicherweise das Binden von Exchange und Warteschlange im Voraus.
3. Beim Binden gibt man ein Thema an, das der Warteschlange wichtig ist, wie z. B. "#.log.#", um anzuzeigen, dass die Warteschlange alle Nachrichten im Zusammenhang mit Logs interessiert (eine Nachricht mit dem RouteKey "MQ.log.error" wird an die Warteschlange weitergeleitet).
4. "#" bedeutet 0 oder mehrere Schlüsselwörter, und "" bedeutet ein Schlüsselwort. Zum Beispiel "log". Es kann mit "log.warn" übereinstimmen, aber nicht mit "log.warn.timeout" übereinstimmen; Aber "log.#" entspricht dem obenstehen.
5. Ebenso wird diese Nachricht fallen, wenn Exchange keine Warteschlange findet, die mit dem RouteKey übereinstimmt.
|