RabbitMQ in 5 Minuten oder weniger erklärt

Wir werden heute sehen, wie Sie die Ladezeit Ihrer Seiten beschleunigen können, indem Sie die schwerste Verarbeitung asynchron ausführen, alles sehr einfach verwaltet, dank RabbitMQ.

Die Stabilität und Geschwindigkeit einer Anwendung oder Website gehören sicherlich zu den wichtigsten Faktoren für Benutzer. Wer hat noch nie eine Website verlassen, bevor er überhaupt die erste Seite gesehen hat, weil es zu lange gedauert hat?

Was ist RabbitMQ

RabbitMQ ist ein Open-Source-, verteilter und skalierbarer Messaging-Broker, der als Vermittler für eine effiziente Kommunikation zwischen Produzenten und Verbrauchern dient.

RabbitMQ implementiert das Anwendungsschicht-Messaging-Protokoll AMQP, das sich auf die Übermittlung asynchroner Nachrichten mit Zustellgarantie durch Empfangsbestätigungen von Nachrichten vom Broker an den Produzenten und von den Verbrauchern an den Produzenten konzentriert.

Wie funktioniert RabbitHQ?

Auf vereinfachte Weise definiert RabbitMQ Warteschlangen, die von Produzenten gesendete Nachrichten speichern, bis konsumierende Anwendungen die Nachricht erhalten und verarbeiten. Es ermöglicht uns, verteilte Systeme zu entwerfen und zu implementieren, bei denen ein System in unabhängige Module unterteilt ist, die über Nachrichten miteinander kommunizieren.

Wie jede Kommunikation brauchen wir einen Produzenten, eine Botschaft und einen Empfänger. In der Mitte des Kuchens befindet sich RabbitMQ, das wäre der Ort, an dem die Nachricht auf den Empfänger wartet.

Lassen Sie uns besser verstehen, wie es funktioniert, indem wir die Austauscharten kennen, die den Austausch von Nachrichten darstellen.

Austauschtypen

Wenn wir über Exchange eine Nachricht über RabbitMQ senden, senden wir sie nicht direkt an eine Warteschlange; Damit andere Systeme sie lesen können, senden wir sie an eine Vermittlungsstelle, die für die Weiterleitung von Nachrichten an verschiedene Warteschlangen zuständig ist.

Bildnachweis: CloudAQMP

Die Arten des Austauschs sind Direct, Fanout, Topic und Readers.

Direkter Austausch

Angenommen, ein Hersteller muss eine Kaufbestätigungsnachricht an drei Verbraucher ausgeben. Das heißt, das System muss mit drei anderen unterschiedlichen Systemen kommunizieren, um den Kauf zu tätigen.

Da RabbitMQ die Nachricht separat an jede Warteschlange sendet, besteht die Möglichkeit, diese anderen Systeme dazu zu bringen, die Nachricht direkt zu empfangen.

Normalerweise leitet die Vermittlungsstelle die Nachricht an die Warteschlangen weiter, aber wir möchten oft nicht, dass unsere Nachrichten an alle Warteschlangen gesendet werden. Daher gibt es mehrere Bedingungen, die wir anwenden können, damit ein Austausch funktioniert.

So können Sie Ihre Nachricht an nur einen Verbraucher senden lassen; anstatt an alle gesendet zu werden.

  So kündigen Sie das Amazon Prime Video-Abonnement

Bindungsschlüssel: Um eine Warteschlange mit einem Austausch zu verbinden, müssen Sie eine Bindung erstellen, eine Beziehung zwischen einer Warteschlange und einem Austausch, wie ein Konnektor.

Routing Key: In dieser Bindung können wir auch ein Element namens Routing Key erstellen, das mit anderen Worten ein Schlüssel zum Weiterleiten unserer Nachrichten an eine bestimmte Warteschlange ist.

Wenn Sie einen Routing-Schlüssel X, einen Routing-Schlüssel Y und einen Routing-Schlüssel Z haben, wird die Nachricht mit Routing-Schlüssel Y zum Beispiel durch die Warteschlange Y geleitet und direkt an den Konsumenten geliefert, den Sie für den Empfang der Nachricht definiert haben.

Auf diese Weise können wir mehrere Warteschlangen mit einer Vermittlungsstelle verbinden, aber gleichzeitig können sie auch unterschiedliche Beziehungen zu den Vermittlungsstellen haben, die die Routing-Schlüssel verwenden.

Fanout-Austausch

Wenn die Nachricht an die Vermittlungsstelle gesendet wird, wird sie an alle damit verbundenen Warteschlangen gesendet. Wenn Sie also 10 Warteschlangen mit einem Fanout-Austausch verbunden haben, erhalten alle Warteschlangen die gesendete Nachricht.

Themenaustausch

Es ist eine der flexibelsten Börsen, die es uns ermöglicht, Nachrichten je nach Betreff zu senden. Und basierend auf der Art und Weise, wie Sie die Routing-Schlüssel benennen, ist es möglich, Muster von Regeln und Beziehungen zwischen Systemen zu erstellen.

Zum Beispiel: Routingschlüssel (x.*); Routing-Schlüssel (*.z); Routingschlüssel (*.y.*).

Was ist AQMP in RabbitMQ

AMQP (Advanced Message Queuing Protocol) ist ein offenes Messaging-Protokoll, das verwendet wird, um den Transport von Nachrichten zwischen mehreren Anwendungen zu definieren. Es ähnelt den HTTP- und TCP-Protokollen darin, dass es sich um ein Protokoll auf Leitungsebene handelt, mit der Ausnahme, dass es einen asynchronen Transport ermöglicht.

RabbitMQ hat sich aus mehreren Gründen für die Implementierung von AMQP entschieden. Erstens wird dieses Protokoll im Gegensatz zu JMS, das eine API definiert, als Standard für Middleware beschrieben.

Diese AMQP-Spezifikation wurde von einem internationalen Konsortium verfasst, dem große Unternehmen wie Red Hat, Cisco Systems und Microsoft angehören. Die zweite ist die Interoperabilität dieses Protokolls, die es jeder Anwendung ermöglicht, die AMQP implementiert, mit einem AMQP-Broker zu kommunizieren.

AMQP ist nicht das einzige Protokoll, das von RabbitMQ verwendet wird. Das folgende Bild stellt alle Protokolle, Sprachen und APIs dar, die von RabbitMQ implementiert und/oder unterstützt werden.

Beste Eigenschaften von RabbitMQ

Neben der Möglichkeit, verschiedene Anwendungen asynchron und von verschiedenen Standorten aus über Nachrichten zu integrieren, bietet uns RabbitMQ weitere Funktionen, die es in der Welt der Messaging-Broker sehr beliebt gemacht haben:

  Wyze-Fehlercode 90: Behebung in Sekunden

Zuverlässige Lagerung

RabbitMQ enthält mehrere Funktionen, die es ermöglichen, die Nachrichtenübermittlung zu garantieren. Unter diesen bietet es Speicher, wenn keine Verbraucher die Nachricht empfangen können. Es ermöglicht Verbrauchern, die Zustellung der Nachricht zu akzeptieren, um sicherzustellen, dass sie erfolgreich verarbeitet wurde.

Wenn die Verarbeitung fehlschlägt, ermöglicht RabbitMQ, dass die Nachricht erneut in die Warteschlange gestellt wird, um von einer anderen Instanz des Verbrauchers konsumiert oder erneut von demselben Verbraucher verarbeitet zu werden, der ursprünglich fehlgeschlagen ist, wenn er wiederhergestellt ist.

RabbitMQ garantiert auch die Lieferreihenfolge der Nachrichten; Das heißt, sie werden in derselben Reihenfolge verbraucht, in der sie in den RabbitMQ-Warteschlangen angekommen sind.

Bildung von Clustern

Obwohl RabbitMQ durch die Verarbeitung von Tausenden von Nachrichten pro Sekunde eine hervorragende Leistung bietet, muss es manchmal in der Lage sein, eine größere Anzahl von Nachrichten zu verarbeiten, ohne die Anwendungsleistung zu beeinträchtigen.

Dafür ermöglicht RabbitMQ die Bildung von Clustern, um die Lösung horizontal zu skalieren, was sowohl für Hersteller als auch für Verbraucher transparent ist.

Hochverfügbare Warteschlangen

In RabbitMQ können Warteschlangen über mehrere Knoten in einem Cluster repliziert werden, wodurch sichergestellt wird, dass der Broker im Falle eines Knotenausfalls oder einer Ausfallzeit weiterhin Nachrichten von Erzeugern empfangen und an die entsprechenden Verbraucher übermitteln kann.

Flexibles Routing

In RabbitMQ können flexible Routing-Regeln definiert werden, sogar nach einem bestimmten Muster, um Nachrichten zwischen Austausch und Warteschlangen durch Bindungen zu leiten.

Unterstützung mehrerer Protokolle

Neben der Unterstützung des AMQP-Protokolls unterstützt RabbitMQ STOMP, MQTT und HTTP über Plugins. Es enthält auch Authentifizierungs- und Zugriffskontrollmechanismen für die Komponenten jedes Brokers.

Reale Anwendungsfälle von RabbitMQ

Die wichtigsten Anwendungsfälle von RabbitMQ ermöglichen die Gewährleistung der Asynchronität zwischen Anwendungen, die Reduzierung der Kopplung zwischen Anwendungen, die Verteilung von Warnungen und die Steuerung der Warteschlange von Jobs im Hintergrund.

Die praktischen Anwendungsfälle von RabbitMQ liegen jedoch im E-Commerce, wo es verwendet wird, um Ihre Verkaufsaufträge zu manipulieren, zu verarbeiten und an Systeme in anderen Sektoren weiterzuleiten, wie z. B. den Vertrieb und die Ausstellung von Rechnungen.

Bei der Abwicklung von Bestellungen können Sie Ihre Verkaufsnachricht an das Verteilzentrum und einen Rechnungsbereich weiterleiten. In diesem Schema funktioniert alles horizontal und folgt dem asynchronen Muster zum Senden von Nachrichten, aber es ist oft möglich, eine Aktion an mehrere Warteschlangen zu senden.

  Erfassen Sie Wartungskosten und legen Sie Erinnerungen für Ihre Autos fest

Nach dem vorherigen Beispiel kann diese Funktion sehr nützlich sein, wenn der Kunde einen Kauf tätigt und das Produkt für den Vertrieb, den Transport und die Rechnungsstellung vorbereitet werden muss.

Und da jeder dieser Sektoren ein anderes System ist, ist es das Ziel von RabbitMQ, all diese Nachrichten an die entsprechenden Systeme weiterzuleiten.

Rabbit MQ-Alternativen:

RabbitMQ ist viel einfacher als es aussieht, und es gibt mehrere Alternativen dazu, darunter:

#1. IronMQ

IronMQ ist eine superschnelle Message-Queuing-Software. Es ist hochverfügbar, langlebig im Design und am besten für eine einmalige Lieferung. IronMQ ist die leistungsstärkste Cloud-native Lösung für moderne Anwendungsarchitektur.

Es unterstützt Push-Warteschlangen, Pull-Warteschlangen und lange Abfragen, wodurch Abfrageanforderungen länger geöffnet bleiben. Darüber hinaus kann es mehrere hochverfügbare Rechenzentren verwenden, was die Skalierbarkeit erleichtert.

Sie können in der Cloud, auf gemeinsam genutzter oder dedizierter Hardware oder vor Ort bereitstellen. Es hat auch eine Reihe von Client-Bibliotheken mit leicht lesbarer Dokumentation.

#2. Apache Kafka

Kafka ist eine Plattform mit einer starken Präsenz im verteilten Event-Streaming. Im Kern ist Kafka als repliziertes, verteiltes, dauerhaftes Commit-Protokoll konzipiert.

Seine größte Verwendbarkeit besteht darin, ereignisgesteuerte Microservices oder groß angelegte Stream-Verarbeitungsanwendungen zu betreiben und Ereignisse automatisch asynchron innerhalb des Clusters für Fehlertoleranz und Hochverfügbarkeit zu replizieren.

#3. Apache ActiveMQ

ActiveMQ ist ein Java-basierter Multiprotokoll-Message-Broker. Damit können wir Anwendungen unter Verwendung des AMQP-Message-Queuing-Protokolls auf der Anwendungsebene integrieren.

Es implementiert mehrere Protokolle für die Integration, wie unter anderem JMS (natives Java) und Stomp (das von PHP-Anwendungen verwendet werden kann).

Darüber hinaus hat Amazon seine „verwaltete“ Version namens Amazon MQ, die die Nutzung des Dienstes erheblich vereinfacht.

Letzte Worte

Messaging Broker sind traditionell ein wichtiger Bestandteil der Architekturen von Organisationen. Angesichts der zunehmenden Anzahl von Benutzern, die über verschiedene Kanäle auf Unternehmenssysteme zugreifen, werden jedoch Produkte benötigt, die eine horizontale Skalierung zu geringen Kosten ermöglichen. Ermöglicht die Verarbeitung einer großen Anzahl von Nachrichten pro Sekunde.

Hier wird eine neue Generation von Brokern wie RabbitMQ in modernen Anwendungen immer relevanter, die unseren Kunden ein hohes Maß an Verfügbarkeit, Zuverlässigkeit, Interoperabilität und Leistung bieten möchten.

Sie können auch einige zuverlässige RabbitMQ-Hosting-Plattformen für Ihre Anwendung erkunden.