RabbitMQ ist ein verteiltes Nachrichten-Middleware, das in der Erlang-Sprache entwickelt und als Open Source veröffentlicht wurde. Es unterstützt das Advanced Message Queuing Protocol (AMQP) und Client-Bibliotheken in verschiedenen Programmiersprachen wie Java, Golang, PHP und Python.

Eigenschaften

  • Zuverlässigkeit: Gewährleistet Zuverlässigkeit durch Nachrichtenpersistenz, Transaktionsunterstützung, Verbraucher- und Übertragungsbestätigung usw.
  • Routing-Mechanismus: Unterstützt gängige Abonnement- und Verbrauchsmodelle wie Broadcast, Abonnement, Header-Matching usw.
  • Skalierbarkeit: Mehrere RabbitMQ-Knoten können einen Cluster bilden und den Cluster je nach tatsächlichem Geschäftsbedarf dynamisch erweitern.
  • Hohe Verfügbarkeit: Queues können auf Maschinen im Cluster als Spiegel eingerichtet werden, so dass die Queues im Falle von Problemen mit einigen Knoten weiterhin verfügbar sind.
  • Mehrere Protokolle: Neben der nativen AMQP-Unterstützung unterstützt RabbitMQ auch mehrere Nachrichtenmittelware-Protokolle wie STOMP, MQTT usw.
  • Multisprachliche Clients: RabbitMQ unterstützt fast alle gängigen Sprachen wie Java, Python, Ruby, PHP, C#, JavaScript usw.
  • Management-Schnittstelle: RabbitMQ bietet eine benutzerfreundliche Oberfläche zur Überwachung und Verwaltung von Nachrichten und Cluster-Knoten.
  • Plugin-Mechanismus: RabbitMQ bietet viele Plugins für umfangreiche Erweiterungen, und Benutzer können auch ihre eigenen Plugins schreiben.

Hauptanwendungsfälle

Asynchrone Verarbeitung

Nicht zum Kerngeschäft gehörende oder weniger wichtige Teile des Geschäftsprozesses können über die Nachrichtenbenachrichtigung asynchron an das Zielsystem übermittelt werden, so dass der Hauptgeschäftsprozess prompt reagieren kann, ohne synchron auf die Verarbeitungsergebnisse von anderen Systemen warten zu müssen.

Anwendungs-Entkopplung

Die Geschäftsausweitung kann auf der Grundlage von Nachrichtenabonnementmechanismen erreicht werden. Zum Beispiel, in einem Szenario für die Bestellung im E-Commerce, wenn ein Benutzer eine Bestellung aufgibt, wird eine Bestellnachricht erzeugt. Das Lagermodul kann die Bestellnachricht für den Versand abonnieren, das Punktemodul kann die Bestellnachricht für das Hinzufügen von Punkten abonnieren, und das SMS-Modul kann die Bestellnachricht für den Versand von SMS abonnieren, und so weiter.

Peak Shaving

Da es möglicherweise Unterschiede in den Verarbeitungsfähigkeiten von Upstream- und Downstream-Systemen gibt, können Nachrichtenwarteschlangen als Regler fungieren, um es den Downstream-Systemen zu ermöglichen, den Datenverkehr in einem gleichmäßigen Tempo zu verarbeiten.

Zum Beispiel, im Fall der erfolgreichen Bezahlung einer Bestellung und der Benachrichtigung des Lagers zum Versand, wenn das aktuelle Bestellmodul eine hohe Konkurrenzfähigkeit von 1000 unterstützt und der Lagerversand nur 100 unterstützt, kann durch die Einführung einer Nachrichtenwarteschlange das Lagermodul die Bestellnachricht abonnieren und den Versand langsam in einer Warteschlange bearbeiten.

ps: Es ist wie das Anstehen für die U-Bahn.