Einführung in die grundlegenden Konzepte von RabbitMQ

Konzeptdiagramm von RabbitMQ

Konzeptdiagramm von RabbitMQ

Erklärung der Konzepte

Nachricht

Eine Nachricht besteht aus einem Nachrichtenkopf (zusätzliche Konfigurationsinformationen) und einem Nachrichteninhalt (d.h. der Nachrichteninhalt).

Publisher

Der Erzeuger der Nachricht, also eine Client-Anwendung, die Nachrichten an einen Austausch veröffentlicht.

Austausch (Exchange)

Ein Austausch wird verwendet, um Nachrichten zu empfangen, die von Erzeugern gesendet werden, und diese Nachrichten an Warteschlangen im Server zu routen.

Es gibt vier Arten von Austauschen:

  • Direkter Typ: Vergleicht den Routing-Schlüssel in der Nachricht mit den Routing-Schlüsseln, die allen Bindungen des Austauschs zugeordnet sind. Wenn sie übereinstimmen, wird die Nachricht an die entsprechende Warteschlange dieser Bindung gesendet.

  • Thema (Topic) Typ: Vergleicht den Routing-Schlüssel in der Nachricht mit den Routing-Schlüsseln, die allen Bindungen des Austauschs zugeordnet sind. Wenn eine Übereinstimmung besteht, wird die Nachricht an die entsprechende Warteschlange dieser Bindung gesendet.

  • Fanout Typ: Leitet Nachrichten direkt an die entsprechenden Warteschlangen aller Bindungen weiter und ignoriert dabei den Routing-Schlüssel während des Routings.

  • Header-Typ: Gleicht die Header in der Nachricht mit den Parametern ab, die allen Bindungen des Austauschs zugeordnet sind. Wenn eine Übereinstimmung besteht, wird die Nachricht an die entsprechende Warteschlange dieser Bindung gesendet (weniger häufig verwendet, ähnlich wie der direkte Typ).

Hinweis: Detaillierte Erläuterungen zu den Austauschtypen werden in den folgenden Abschnitten zu den Arbeitsmodi bereitgestellt. Dies ist nur ein Überblick.

Bindung

Die Beziehung, die verwendet wird, um eine Verbindung zwischen Nachrichtenwarteschlangen und Austauschen herzustellen.

Warteschlange (Queue)

Eine Nachrichtenwarteschlange, die Nachrichten speichert, bis sie an Verbraucher übermittelt werden. Sie dient sowohl als Behälter für Nachrichten als auch als Endpunkt für Nachrichten. Eine Nachricht kann an eine oder mehrere Warteschlangen übermittelt werden. Nachrichten verbleiben in der Warteschlange, bis Verbraucher eine Verbindung herstellen und sie abrufen.

Verbindung (Connection)

Eine Netzwerkverbindung, wie beispielsweise eine TCP-Verbindung.

Kanal (Channel)

Ein Kanal ist eine virtuelle Verbindung, die innerhalb einer realen TCP-Verbindung hergestellt wird. Alle AMQP-Befehle werden über Kanäle gesendet, egal ob es sich um das Veröffentlichen von Nachrichten, das Abonnieren von Warteschlangen oder das Empfangen von Nachrichten handelt. Dieses Design führt das Konzept von Kanälen ein, um eine einzelne TCP-Verbindung wiederzuverwenden, da das Herstellen und Beenden von TCP-Verbindungen für das Betriebssystem kostspielig ist.

Verbraucher

Der Verbraucher von Nachrichten, der eine Client-Anwendung darstellt, die Nachrichten aus den Nachrichtenwarteschlangen abruft.

Virtueller Host

Ein virtueller Host repräsentiert eine Gruppe von Austauschen, Nachrichtenwarteschlangen und zugehörigen Objekten. Es ist eine eigenständige Serverdomäne, die die gleiche Identitätsauthentifizierung und Verschlüsselungsumgebung teilt. Jeder vHost ist im Wesentlichen eine Mini-Version eines RabbitMQ-Servers mit eigenen Warteschlangen, Austauschen, Bindungen und Berechtigungsmechanismen.

vHosts sind ein grundlegendes Konzept in AMQP und müssen beim Herstellen einer Verbindung angegeben werden. Der Standard-vHost für RabbitMQ ist /.

Hinweis: Der virtuelle Host ist eine Form der Ressourcenisolierungsstrategie, die die Partitionierung mehrerer isolierter Bereiche innerhalb desselben RabbitMQ-Servers ermöglicht.

Broker

Stellt die physische Entität des Nachrichtenwarteschlangenservers dar.