Geekflare wird von unserem Publikum unterstützt. Wir können Affiliate-Provisionen durch den Kauf von Links auf dieser Website verdienen.
Teilen:

RabbitMQ in 5 Minuten oder weniger erklärt

RabbitMQ-Erklärt-in-5-Minuten-oder-weniger
Invicti Web Application Security Scanner – die einzige Lösung, die eine automatische Verifizierung von Schwachstellen mit Proof-Based Scanning™ bietet.

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?

What is RabbitMQ

RabbitMQ-1

RabbitMQ ist Open Source, verteilt und skalierbar Messaging-Broker die 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 Erzeuger und von den Verbrauchern an den Erzeuger konzentriert.

How does RabbitHQ work

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.

Austausch-Thema-Fanout-direkt
Bild-Kredit: 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 erhalten.

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.

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-Schlüssel: In diesem Bind 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.

Beispielsweise: routing key (x.*); routing key(*.z); routing key (*.y.*).

What is 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 ist ähnlich wie HTTP und TCP Protokolle insofern, als es sich um ein Protokoll auf Leitungsebene handelt, außer 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.

Dieses AMQP wurde von einem internationalen Konsortium verfasst, dem große Unternehmen wie Red Hat, Cisco Systems und Microsoft angehören Spezifikation. 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.

Best Features of 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:

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 für mehrere Protokolle

Neben der Unterstützung des AMQP-Protokolls unterstützt RabbitMQ STOMP, MQTT und HTTP über Plugins. Es beinhaltet auch Beglaubigung und Zugriffskontrollmechanismen für die Komponenten jedes Maklers.

Real-life Use Cases of 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 sind jedoch in E-Commerce , wobei t verwendet wird, um Ihre Verkaufsaufträge zu manipulieren, zu verarbeiten und an Systeme in anderen Sektoren weiterzuleiten, z. B. Vertrieb und Rechnungsstellung.

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.

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 alternatives:

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

# 1. EisenMQ

EisenMQ 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.

ironmq-1

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 

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

kafka-1

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

Apache-ActiveMQ

ActiveMQ ist ein Java-basierter Multiprotokoll-Message-Broker. Damit können wir Anwendungen integrieren, die das AMQP-Message-Queuing-Protokoll auf der Anwendungsebene verwenden.

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 genannt Amazon MQ, was die Nutzung des Dienstes erheblich vereinfacht.

Zusammenfassung

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 erkunden RabbitMQ-Hosting-Plattformen für Ihre Bewerbung.

Danke an unsere Sponsoren
Weitere großartige Lektüre zum Thema Entwicklung
Treiben Sie Ihr Geschäft an
Einige der Tools und Dienste, die Ihr Unternehmen beim Wachstum unterstützen.
  • Invicti verwendet das Proof-Based Scanning™, um die identifizierten Schwachstellen automatisch zu verifizieren und innerhalb weniger Stunden umsetzbare Ergebnisse zu generieren.
    Versuchen Sie es mit Invicti
  • Web-Scraping, Wohn-Proxy, Proxy-Manager, Web-Unlocker, Suchmaschinen-Crawler und alles, was Sie zum Sammeln von Webdaten benötigen.
    Versuchen Sie es mit Brightdata
  • Semrush ist eine All-in-One-Lösung für digitales Marketing mit mehr als 50 Tools in den Bereichen SEO, Social Media und Content-Marketing.
    Versuchen Sie es mit Semrush
  • Intruder ist ein Online-Schwachstellenscanner, der Cyber-Sicherheitslücken in Ihrer Infrastruktur findet, um kostspielige Datenschutzverletzungen zu vermeiden.
    MIT DER INTELLIGENTEN SCHADENKALKULATION VON Intruder