Einführung in das AMQP-Protokoll
AMQP (Advanced Message Queuing Protocol) ist ein Standardprotokoll auf Anwendungsebene, das einheitliche Messaging-Dienste bereitstellt und ein offener Standard für Anwendungsschichtprotokolle ist, die für nachrichtenorientierte Middleware entwickelt wurden. AMQP ist ein Netzwerkprotokoll zum Übermitteln asynchroner Nachrichten zwischen Prozessen.
Clients und Nachrichten-Middleware, die auf diesem Protokoll basieren, können Nachrichten zustellen, ohne durch verschiedene Client-/Middleware-Produkte, unterschiedliche Entwicklungssprachen usw. eingeschränkt zu sein.
Die Hauptmerkmale von AMQP sind nachrichtenorientiert, warteschlangenorientiert, Routing (einschließlich Peer-to-Peer und Publish/Subscribe), Zuverlässigkeit und Sicherheit. AMQP setzt das Verhalten von Nachrichtenanbietern und Kunden durch und ermöglicht so echte Interoperabilität zwischen verschiedenen Anbietern.
Weiterleitungsnachrichten
In der AMQP-Architektur besteht jede erfolgreiche Nachrichtenleitung aus drei Teilen:
- Austausch: Wo Produzenten Botschaften veröffentlichen
- Warteschlangen: Wo Verbraucher Nachrichten empfangen
- Bindungen: Wie Nachrichten vom Switch zu einer bestimmten Warteschlange geleitet werden
Austausche und Bindungen
Wie erreicht die Nachricht also die Warteschlange? Wann immer Sie eine Nachricht an einen Verbraucher senden möchten, müssen Sie sie zuerst an den Austauscher senden. Dann entscheidet RabbitMQ basierend auf bestimmten Regeln oder Routing-Schlüsseln, an welche Warteschlange es die Nachrichten zustellen soll.
Regeln – oder Routing-Schlüssel – ermöglichen es Ihnen, eine Warteschlange an die Börse zu binden. RabbitMQ versucht, den Routing-Schlüssel in der Nachricht mit dem im Binding verwendeten Schlüssel abzugleichen. Die Nachricht wird dann basierend auf einem von vier Austauschtypen an die Warteschlange geliefert: Fanout, Topic, Direct, Header
Fanout-Austausch
Dieser Austauschtyp sendet alle erhaltenen Nachrichten an alle an ihn gebundenen Warteschlangen. Alle mit der veröffentlichten Nachricht bereitgestellten Routing-Schlüssel werden ignoriert.
Themenaustausch
Bei dieser Art von Austausch werden Nachrichten basierend auf dem Routing-Schlüssel an eine Warteschlange gesendet. Das bedeutet, dass Nachrichten, die an den Themenaustausch gesendet werden, einen bestimmten Routing-Schlüssel haben müssen, der eine Liste von Wörtern sein muss, getrennt durch Punkte (z. B. 'acs.deviceoperations.'). Das Wortlimit beträgt 255 Bytes.
Der Bindeschlüssel muss im gleichen Format wie der Routing-Schlüssel sein. Daher werden Nachrichten, die mit einem bestimmten Routing-Schlüssel gesendet werden, an jede Warteschlange geliefert, die mit einem passenden Bindeschlüssel gebunden ist.
Bindeschlüssel ermöglichen folgende Ausdrucksregeln:
*(Sternchen) kann nur ein Wort ersetzen # (Hash) kann null oder mehr Wörter ersetzen Wenn eine Warteschlange mit einem "#"-(Hash-)Bindungsschlüssel gebunden ist, erhält sie alle Nachrichten unabhängig vom Routing-Schlüssel, ähnlich wie bei einem Fanout-Fanout-Austausch.
Direkter Austausch
Wenn eine Warteschlange deklariert wird, wird sieBinde automatisch an einen Switch, der den Warteschlangennamen als Routing-Taste verwendet。 Wenn der Routing-Schlüssel übereinstimmt, wird die Nachricht an die entsprechende Warteschlange geliefert.
Header-Austausch
Header-Switches ähneln in gewisser Weise Topic-Switches, aber im Gegensatz zu Topic-Switches basiert das Routing auf Route-Schlüsseln, und die Routing-Werte der Header-Switches basieren auf den Header-Daten der Nachricht. Der Topic-Switch-Routing-Key ist nur eine Zeichenkette, während der Header-Switch eine ganze Zahl und ein Hash sein kann.
(Ende)
|