Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 3645|Antwort: 0

Detaillierte Erklärung der RabbitMQ AMQP-Nachrichtenarchitektur

[Link kopieren]
Veröffentlicht am 14.08.2022 23:32:43 | | | |
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.

Detaillierte Erklärung des AMQP-Protokolls
https://www.itsvse.com/thread-10347-1-1.html

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)





Vorhergehend:Detaillierte Erklärung des AMQP-Protokolls
Nächster:[Dreh dich]. NET-Leistungsoptimierungen – Listsammlungen schnell durchlaufen
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com