Was ist das Advanced Message Queuing Protocol (AMQP)?

27. März 2024

Advanced Message Queuing Protocol (AMQP) ist ein offenes Standardprotokoll der Anwendungsschicht für nachrichtenorientierte Kommunikation Middleware, mit Schwerpunkt auf Nachrichtenwarteschlangen, Routing (Punkt-zu-Punkt und Publish-and-Subscribe), Zuverlässigkeit und Sicherheit.

Im Gegensatz zu proprietären Nachrichtensystemen ist AMQP ein offenes, standardisiertes Protokoll, das die Interoperabilität zwischen Systemen und Anwendungen ermöglicht. Es ermöglicht Anwendungen, auf zuverlässige und skalierbare Weise miteinander zu kommunizieren und Nachrichten zu senden, unabhängig von der zugrunde liegenden Plattform, Architektur oder Sprache. Diese Fähigkeit macht es zu einem unverzichtbaren Werkzeug für den Aufbau komplexer verteilter Systeme oder die Integration heterogener Umgebungen.

AMQP arbeitet auf einer Broker-basierten Architektur, bei der der Messaging-Broker als Vermittler fungiert, der Nachrichten von Produzenten empfängt (Senden). Anwendungen) und leitet diese Nachrichten an die entsprechenden Verbraucher (Empfangsanwendungen) weiter. Dieses Modell entkoppelt Erzeuger und Verbraucher und ermöglicht ihnen einen unabhängigen Betrieb.

Das Protokoll definiert eine Reihe von Komponenten wie Nachrichtenwarteschlangen, Austausch und Bindungen, die dabei helfen flexible Weiterleitung und Zustellung von Nachrichten. Darüber hinaus spezifiziert AMQP sowohl das Verhalten des Messaging-Broker und das Messaging-Protokoll selbst, das eine zuverlässige Nachrichtenzustellung durch Funktionen wie Nachrichtenbestätigung, dauerhafte Warteschlangen und Nachrichtenpersistenz gewährleistet.

Eine kurze Geschichte von AMQP

AMQP entstand aus dem Bedarf an einem standardisierten, offenen und interoperablen Protokoll für Messaging-Middleware. Seine Entwicklung begann im Jahr 2003, als John O'Hara von JPMorgan Chase in London die Einschränkungen und Kosten der Verwendung proprietärer Messaging-Systeme für die Anwendungsintegration erkannte. Ziel war es, ein Protokoll zu erstellen, das die nachrichtenorientierte Kommunikation über verschiedene Plattformen und Technologien hinweg erleichtert und die Abhängigkeit von bestimmten Anbietern und proprietären Systemen verringert. Die erste offizielle Version von AMQP, AMQP 0-9-1, wurde 2006 veröffentlicht.

Die Veröffentlichung von AMQP 1.0 im Oktober 2011 markierte einen bedeutenden Meilenstein. Mit AMQP 1.0 wurden wesentliche Änderungen eingeführt, wodurch das Protokoll umfassender wurde flexibel und interoperabel durch die Definition eines sprachunabhängigen binären Wire-Level-Protokolls, das auf jeder Plattform implementiert werden kann. Diese Version von AMQP erhielt breite Unterstützung in der Industrie und wurde 2014 von der International Organization for Standardization (ISO) und der International Electrotechnical Commission (IEC) als ISO/IEC 19464 als internationaler Standard ratifiziert.

Seitdem wurde AMQP weltweit für verschiedene Anwendungen eingesetzt, von Finanzdienstleistungen bis hin zu IoT (Internet der Dinge) und cloud Computing.

Wie funktioniert AMQP?

AMQP (Advanced Message Queuing Protocol) basiert auf einem sorgfältig entwickelten Framework, das den Nachrichtenfluss zwischen Produzenten und Konsumenten auf zuverlässige, sichere und effiziente Weise orchestriert.

Im Kern nutzt das Protokoll eine Broker-basierte Architektur, die als Vermittler fungiert und die Kommunikationspfade innerhalb des Nachrichtensystems verwaltet. Produzenten senden Nachrichten an den Broker, in denen sie nicht nur den Inhalt, sondern auch kritische Angaben machen Metadaten, wie Routing-Schlüssel und Nachrichtenprioritäten. Dieser Broker übernimmt dann die Verantwortung für die Verarbeitung dieser Nachrichten und bestimmt anhand der etablierten Routing-Logik ihre geeigneten Ziele.

Das Nachrichtenrouting innerhalb von AMQP wird durch Austausche erleichtert, die Nachrichten klassifizieren und sie basierend auf vordefinierten Regeln und der Art des verwendeten Austauschs an die richtigen Warteschlangen weiterleiten. Dieses Setup ermöglicht eine Vielzahl von Nachrichtenmustern, von einfachen Punkt-zu-Punkt-Nachrichten bis hin zu komplexeren Publish-Subscribe-Modellen. Warteschlangen speichern die Nachrichten vorübergehend und stellen so sicher, dass sie sicher aufbewahrt werden, bis ein Verbraucher bereit ist, sie zu verarbeiten. Beim Empfang einer Nachricht können Verbraucher deren Verarbeitung bestätigen und dem Broker signalisieren, die Nachricht aus der Warteschlange zu entfernen, wodurch die Integrität und Ordnungsmäßigkeit der Nachrichtenzustellung gewahrt bleibt.

Dieses ausgefeilte Zusammenspiel der AMQP-Komponenten stellt sicher, dass Nachrichten nicht nur effizient, sondern auch mit einem hohen Maß an Zuverlässigkeit und Sicherheit übermittelt werden. Das Protokoll unterstützt erweiterte Funktionen wie Nachrichtenbestätigung, Transaktionen und dauerhafte Nachrichtenübermittlung, die für Anwendungen, die eine garantierte Nachrichtenzustellung und die Fähigkeit zur Wiederherstellung nach Systemausfällen erfordern, unerlässlich sind. Darüber hinaus sind die Sicherheitsmechanismen von AMQP einschließlich SASL für Beglaubigung und TLS für Verschlüsselung von Daten während der Übertragung.

AMQP-Komponenten

AMQP erleichtert komplexe Nachrichtenübermittlung durch eine Reihe von Kernkomponenten, die auf strukturierte Weise interagieren. Diese Komponenten sind für die AMQP-Architektur von grundlegender Bedeutung und ermöglichen die Unterstützung einer Vielzahl von Nachrichtenmustern. Hier finden Sie eine Liste und Erläuterung dieser Schlüsselkomponenten:

  • Broker. Der Broker fungiert als Vermittler zwischen Nachrichtenproduzenten (Sendern) und Konsumenten (Empfängern). Es ist dafür verantwortlich, Nachrichten von Produzenten zu empfangen, sie entsprechend weiterzuleiten und sie an die beabsichtigten Verbraucher zu übermitteln. Der Broker stellt sicher, dass Nachrichten effizient gespeichert, verwaltet und weitergeleitet werden, und sorgt so für Zuverlässigkeit und Skalierbarkeit des Nachrichtensystems.
  • Hersteller. Der Produzent, auch Herausgeber genannt, ist eine Anwendung oder ein Dienst, der Nachrichten sendet. Produzenten erstellen Nachrichten und senden sie an eine Börse innerhalb des Brokers, oft ohne zu wissen, welche spezifischen Verbraucher die Nachrichten erhalten. Dadurch werden die sendenden und empfangenden Teile des Systems entkoppelt und verbessert flexFlexibilität und Skalierbarkeit.
  • Verbraucher. Ein Verbraucher ist eine Anwendung oder ein Dienst, der Nachrichten empfängt. Verbraucher abonnieren eine Warteschlange innerhalb des Brokers und verarbeiten Nachrichten, sobald sie eintreffen. Verbraucher können Nachrichten nach der Verarbeitung bestätigen, wodurch der Broker darüber informiert wird, dass die Nachricht sicher aus der Warteschlange entfernt werden kann.
  • Austausch. Börsen sind AMQP-Einheiten, an die Produzenten Nachrichten senden. Ein Austausch empfängt Nachrichten und leitet sie basierend auf dem Routing-Schlüssel, dem Austauschtyp und den Bindungen der Nachricht an eine oder mehrere Warteschlangen weiter. Börsen entkoppeln Produzenten von Warteschlangen und ermöglichen so eine komplexere Routing-Logik. Es gibt verschiedene Arten von Börsen, darunter:
    • Direkter Austausch. Leitet Nachrichten basierend auf einem passenden Routing-Schlüssel an Warteschlangen weiter.
    • Fanout-Austausch. Sendet Nachrichten an alle gebundenen Warteschlangen, ohne Routing-Schlüssel zu berücksichtigen.
    • Themenaustausch. Leitet Nachrichten basierend auf Platzhalterübereinstimmungen zwischen dem Routing-Schlüssel und dem in der Bindung angegebenen Routing-Muster an Warteschlangen weiter.
    • Header-Austausch. Leitet Nachrichten basierend auf übereinstimmenden Header-Werten und nicht auf Routing-Schlüsseln weiter.
  • Warteschlange. Eine Warteschlange ist ein Puffer, der Nachrichten speichert, bis sie von einem Verbraucher sicher verarbeitet werden können. Warteschlangen stellen sicher, dass Nachrichten in der Reihenfolge „Wer zuerst kommt, mahlt zuerst“ an Verbraucher übermittelt werden, obwohl Prioritäten festgelegt werden können. Verbraucher abonnieren Warteschlangen, um Nachrichten zu empfangen.
  • Bindung. Bindungen sind Regeln, die Warteschlangen mit Börsen verknüpfen. Eine Bindung kann einen Routing-Schlüssel oder ein Routing-Muster enthalten, das vorgibt, wie Nachrichten von der Vermittlungsstelle an die Warteschlange weitergeleitet werden sollen. Bindungen bestimmen die Beziehung zwischen Börsen und Warteschlangen und steuern, wie Nachrichten innerhalb des Brokers gefiltert und weitergeleitet werden.
  • Routing-Schlüssel. Ein Routing-Schlüssel ist eine Bezeichnung oder Kennung, die Produzenten an Nachrichten anhängen, wenn diese an eine Börse gesendet werden. Der Wert des Routing-Schlüssels wird vom Austausch in Verbindung mit den Bindungskonfigurationen verwendet, um zu bestimmen, welche Warteschlangen die Nachricht empfangen sollen.
  • Botschaft. Bei der Nachricht handelt es sich um die zwischen Producer und Consumer transportierten Daten. Es besteht aus einer Nutzlast (den eigentlichen zu übertragenden Daten) und Headern oder Eigenschaften (Metadaten über die Nachricht, wie z. B. Typ, Priorität und Übermittlungsmodus).
  • Kanal. Ein Kanal ist eine virtuelle Verbindung innerhalb einer physischen Netzwerkverbindung. Kanäle helfen beim Multiplexen der Netzwerkverbindung zwischen dem AMQP-Client (Produzent/Verbraucher) und dem Broker für eine effizientere Kommunikation.
  • Virtueller Host (vHost). Ein virtueller Host bietet eine Möglichkeit, Anwendungen mithilfe desselben AMQP-Brokers zu trennen. Jeder virtuelle Host kann seinen eigenen unabhängigen Satz von Austauschen, Warteschlangen und Bindungen haben.

AMQP-Anwendungsfälle

AMQP ist ein vielseitiges Messaging-Protokoll, das eine Vielzahl von Anwendungsfällen in verschiedenen Branchen und Anwendungen unterstützt. Aufgrund seines robusten Funktionsumfangs, einschließlich Nachrichtenwarteschlange, Routing, Zuverlässigkeit und Sicherheit, eignet es sich gut für komplexe, verteilte und skalierbare Systeme. Hier sind einige wichtige Anwendungsfälle für AMQP:

  • Enterprise Application Integration. AMQP ermöglicht Unternehmensanwendungen, -systeme und Datenbanken um zuverlässig und sicher zu kommunizieren und Daten auszutauschen. Dies ist besonders nützlich in heterogenen Umgebungen, in denen Anwendungen auf verschiedenen Plattformen und Technologien erstellt werden, die nahtlos zusammenarbeiten müssen.
  • Entkoppelte Systeme. In Microservices-Architekturen oder bei der Implementierung serviceorientierter Architekturen (SOA) ermöglicht AMQP die Kommunikation von Diensten, ohne eng miteinander gekoppelt zu sein. Diese Entkopplung verbessert die Skalierbarkeit und Belastbarkeit des Systems, da Dienste unabhängig voneinander entwickelt, bereitgestellt und skaliert werden können.
  • Datenverarbeitung in Echtzeit. AMQP wird in Szenarien verwendet, die Folgendes erfordern Echtzeitdaten B. Streaming-Analysen, bei denen Daten sofort erfasst, verarbeitet und analysiert werden müssen. Das Protokoll gewährleistet die zuverlässige Zustellung von Nachrichten auch bei Netzwerkausfällen oder Verarbeitungsverzögerungen.
  • Lastverteilung. AMQP kann Aufgaben oder Arbeitslasten auf mehrere Worker-Prozesse oder -Dienste verteilen und so dabei helfen die Last ausgleichen und die Gesamteffizienz und Reaktionsfähigkeit des Systems verbessern. Diese Funktion ist besonders nützlich in cloud Computing und verteilte Computing-Umgebungen mit unvorhersehbaren Arbeitslasten.
  • Asynchrone Kommunikation. AMQP unterstützt asynchrone Kommunikationsmuster, sodass Anwendungen Nachrichten senden und empfangen können, ohne Vorgänge zu blockieren. Diese Art der Kommunikation ist von entscheidender Bedeutung für Anwendungen, die einen hohen Durchsatz und eine geringe Latenz erfordern, da sie es ihnen ermöglicht, beim Warten auf Nachrichten reaktionsfähig zu bleiben.
  • Internet der Dinge (IoT). In IoT-Anwendungen wird AMQP verwendet, um Daten von verschiedenen Sensoren und Geräten zu sammeln und an Verarbeitungssysteme zu übertragen oder cloud Dienstleistungen. Seine Fähigkeit, über eingeschränkte Netzwerke zu arbeiten und sein sicheres, zuverlässiges Messaging machen es zu einer ausgezeichneten Wahl für IoT-Szenarien.
  • Finanzdienstleistungen. AMQP wird in der Finanzbranche für die Transaktionsverarbeitung, Echtzeit-Handelssysteme und die Zahlungsabwicklung eingesetzt. Seine Zuverlässigkeit und Unterstützung für Transaktionsnachrichten gewährleisten die Integrität und Konsistenz von Finanztransaktionen.
  • Benachrichtigungen und Warnungen. AMQP kann zur Implementierung von Benachrichtigungssystemen verwendet werden, bei denen Warnungen, Benachrichtigungen oder E-Mails als Reaktion auf bestimmte Ereignisse oder Bedingungen an Benutzer oder Systeme gesendet werden. Dank der zuverlässigen Nachrichtenübermittlung ist gewährleistet, dass Benachrichtigungen auch dann zugestellt werden, wenn der Empfänger vorübergehend nicht erreichbar ist.
  • Gesundheitswesen. Im Gesundheitswesen ermöglicht AMQP eine sichere und zuverlässige Kommunikation zwischen verschiedenen Systemen wie Patientenakten, Abrechnungen und Diagnosegeräten. Es stellt sicher, dass sensible Daten sicher übertragen und regelkonform verarbeitet werden.

AMQP vs. MQTT

AMQP und MQTT (Message Queuing Telemetry Transport) sind beides Protokolle, die für nachrichtenorientierte Middleware entwickelt wurden, aber sie dienen unterschiedlichen Zwecken und sind für unterschiedliche Anwendungsfälle optimiert.

AMQP ist ein funktionsreicheres Protokoll, das eine breite Palette von Messaging-Funktionen bietet, einschließlich Nachrichtenwarteschlange, Routing, Transaktionsverwaltung und Sicherheit. Sein Modell ist von Natur aus komplexer und flexible und bietet Robustheit für Systeme, die eine präzise Kontrolle über das Messaging-Verhalten und die Integrationen auf verschiedenen Plattformen benötigen.

Andererseits ist MQTT einfach und leichtgewichtig konzipiert. Dieses Protokoll folgt einem Publish-Subscribe-Muster und eignet sich hervorragend für Szenarien, die minimale Datenpakete und eine effiziente Nachrichtenverteilung an mehrere Verbraucher erfordern. MQTT zeichnet sich durch einen geringen Stromverbrauch und eine einfache Implementierung auf Geräten mit begrenzten Verarbeitungskapazitäten aus und eignet sich daher ideal für Echtzeit-Messaging in IoT-Ökosystemen.

Hier finden Sie eine Übersicht dieser Vergleiche:

VergleichspunktAMQPMQTT
DesignzielEntwickelt für komplexe Messaging-Muster und Unternehmensintegration.Entwickelt für leichtes Messaging, hauptsächlich in IoT-Szenarien.
Protokoll-OverheadHöher aufgrund eines umfassenderen Funktionsumfangs.Niedriger, optimiert für minimale Bandbreitennutzung.
Messaging-ModellUnterstützt sowohl Punkt-zu-Punkt- als auch Publish-Subscribe-Modelle sowie erweitertes Routing, Transaktionen und Nachrichtenwarteschlangen.Verwendet hauptsächlich ein Publish-Subscribe-Modell, wobei der Schwerpunkt weniger auf der Nachrichtenweiterleitung liegt.
Quality of Service (QoS)Bietet verschiedene Ebenen der Nachrichtenzustellungszusicherung, einschließlich der Zustellung „höchstens einmal“, „mindestens einmal“ und „genau einmal“.Bietet drei QoS-Stufen: 0 (höchstens einmal), 1 (mindestens einmal) und 2 (genau einmal).
AnwendungsbeispieleIdeal für die Integration von Unternehmensanwendungen, komplexe Geschäftsprozesse und Situationen, die eine zuverlässige Nachrichtenzustellung und Transaktionsunterstützung erfordern.Bestens geeignet für den Anschluss von IoT-Geräten, insbesondere in Umgebungen mit begrenzter Bandbreite und Leistung.
FlexFlexibilität und KomplexitätKomplexer aufgrund einer Vielzahl von Funktionen, deren effektive Implementierung mehr Wissen erfordert.Einfacher und unkomplizierter, was die Implementierung in eingeschränkten Umgebungen erleichtert.
SicherheitBietet umfassende Sicherheitsfunktionen, einschließlich Authentifizierung und Verschlüsselung.Unterstützt grundlegende Sicherheitsmechanismen, verlässt sich jedoch häufig auf die zugrunde liegende Netzwerksicherheit.
Flexible KommunikationEntwickelt, um Interoperabilität zwischen verschiedenen Systemen und Anbietern zu ermöglichen, wodurch es für Unternehmensumgebungen mit unterschiedlichen Technologien geeignet ist.Der Schwerpunkt liegt auf der Interoperabilität im Kontext von IoT-Geräten und -Plattformen.

Anastazija
Spasojević
Anastazija ist eine erfahrene Content-Autorin mit Wissen und Leidenschaft für cloud Computer, Informationstechnologie und Online-Sicherheit. Bei phoenixNAP, konzentriert sie sich auf die Beantwortung brennender Fragen zur Gewährleistung der Datenrobustheit und -sicherheit für alle Teilnehmer der digitalen Landschaft.