RabbitMQ ist eine Open-Source- Message-Broker -Software (manchmal auch Message-Oriented Middleware genannt ), die ursprünglich das Advanced Message Queuing Protocol (AMQP) implementierte und seither durch eine Plug-in-Architektur erweitert wurde, um Streaming Text Oriented Messaging Protocol (STOMP), MQ Telemetry Transport (MQTT) und andere Protokolle zu unterstützen . [ 2 ]
Der in Erlang geschriebene RabbitMQ-Server basiert auf dem Open Telecom Platform Framework für Clustering und Failover. Client-Bibliotheken zur Anbindung an den Broker sind für alle gängigen Programmiersprachen verfügbar. Der Quellcode wird unter der Mozilla Public License veröffentlicht .
Seit November 2020 sind kommerzielle Angebote von RabbitMQ für Support und Enterprise-Funktionen verfügbar: „VMware RabbitMQ OVA“, „VMware RabbitMQ“ und „VMware RabbitMQ for Kubernetes“ (unterschiedliche Funktionsumfänge) [ 3 ]. Open-Source RabbitMQ wird auch von Bitnami [ 4 ] und kommerziell für den Tanzu Application Service von VMware angeboten .
Geschichte
RabbitMQ wurde ursprünglich von Rabbit Technologies Ltd. entwickelt, einem Joint Venture von LShift und CohesiveFT aus dem Jahr 2007 [ 5 ]. Im April 2010 wurde RabbitMQ von SpringSource , einer Abteilung von VMware , übernommen . [ 6 ] Im Mai 2013 wurde das Projekt Teil von Pivotal Software [ 7 ] , das im Dezember 2019 wieder von VMware übernommen wurde. [ 8 ]
Das Projekt besteht aus:
- Der RabbitMQ-Austauschserver
- Gateways für die Protokolle AMQP , HTTP , STOMP und MQTT
- AMQP- Clientbibliotheken für Java , .NET Framework und Erlang. (AMQP-Clients für andere Sprachen sind von anderen Anbietern erhältlich.)
- Eine Plug-in-Plattform zur Erweiterbarkeit mit einer vordefinierten Sammlung unterstützter Plug-ins, darunter:
- Ein „Shovel“-Plug-in, das sich um das Verschieben oder Kopieren (Replizieren) von Nachrichten von einem Broker zu einem anderen kümmert.
- Ein „Federation“-Plug-in, das einen effizienten Nachrichtenaustausch zwischen Brokern (auf Börsenebene) ermöglicht.
- Ein „Management“-Plug-in, das die Überwachung und Steuerung von Brokern und Broker-Clustern ermöglicht.
Beispiele
Dieser Abschnitt enthält Beispielprogramme, die in Python (unter Verwendung des Pika- Pakets) geschrieben wurden, um Nachrichten mithilfe einer Warteschlange zu senden und zu empfangen.
Senden
Der folgende Codeabschnitt stellt eine Verbindung her, prüft, ob die Empfängerwarteschlange existiert, sendet dann eine Nachricht und schließt schließlich die Verbindung.
#!/usr/bin/env python3 import pikaconnection = pika.BlockingConnection ( pika.ConnectionParameters ( host = " localhost" ) ) channel = connection.channel ( ) channel.queue_declare ( queue = "hello" ) channel.basic_publish ( exchange = " " , routing_key = " hello " , body = " Hello World!" ) print ( " [ x] 'Hello World!' gesendet " ) connection.close ( )Empfang
Das folgende Programm empfängt analog dazu Nachrichten aus der Warteschlange und gibt sie auf dem Bildschirm aus: (Hinweis: Dieses Beispiel bestätigt den Empfang der Nachricht nicht .)
#!/usr/bin/env python3 import pikadef callback ( ch , method , properties , body ): print ( " [x] Received %r " % body )connection = pika.BlockingConnection ( pika.ConnectionParameters ( host = "localhost" )) channel = connection.channel ( ) channel.queue_declare ( queue = "hello" ) print ( " [ * ] Warte auf Nachrichten. Zum Beenden Strg + C drücken . " ) channel.basic_consume ( queue = " hello " , on_message_callback = callback ) channel.start_consuming ( )Siehe auch
Referenzen
- ^ „Version 4.3.2“ . 15. Juni 2026. Abgerufen am 16. Juni 2026 .
- Welche Protokolle unterstützt RabbitMQ?
- ^ „VMware RabbitMQ“ . Abgerufen am 5. Mai 2023 .
- ^ "RabbitMQ" . bitnami.com . Abgerufen am 8. Mai 2023 .
- ^ „Einführung von RabbitMQ Open Source Enterprise Messaging“ (PDF) . Pressemitteilung . 8. Februar 2007. Abgerufen am 23. Oktober 2013 .
- ^ „Rabbit Technologies gibt Übernahme durch SpringSource bekannt“ . Pressemitteilung . 13. April 2010. Archiviert vom Original am 18. April 2010. Abgerufen am 3. Oktober 2013 .
- ^ „Stolz Teil von Pivotal“ . Pressemitteilung . 14. Mai 2010. Archiviert vom Original am 2. Juni 2013. Abgerufen am 3. Oktober 2013 .
- ^ „VMware schließt Übernahme von Pivotal ab“ . VMware News and Stories . 30. Dezember 2019. Abgerufen am 6. April 2023 .
Weiterführende Literatur
- Joern Barthel (13.09.2009). „Einführung in AMQP und RabbitMQ“ . InfoQ.
- Peter Cooper (09.04.2009). „RabbitMQ – Eine schnelle und zuverlässige Warteschlangenoption für Ruby-Entwickler“ . RubyInside.
- RabbitMQ: Ein Open-Source-Messaging-Broker, der einfach funktioniert . Google Tech Talks. 25.09.2008.