Teilen über


Integrieren von Service Bus in RabbitMQ

In dieser Anleitung erfahren Sie, wie Nachrichten von RabbitMQ an Service Bus gesendet werden.

Im Folgenden werden einige Szenarios beschrieben, in denen diese Funktionen genutzt werden können:

  • Edge-Einrichtungen: In einer Edge-Einrichtung werden Nachrichten an RabbitMQ gesendet. Wir möchten diese Nachrichten jedoch zur weiteren Verarbeitung an Azure Service Bus weiterleiten, sodass wir viele Azure-Funktionen für Big Data nutzen können.
  • Hybrid Cloud: Ihr Unternehmen hat soeben einen Drittanbieter gefunden, der für die eigenen Messaginganforderungen RabbitMQ verwendet. Er befindet sich in einer anderen Cloud. Während er zu Azure wechselt, können Sie bereits Daten freigeben, indem Sie RabbitMQ mit Azure Service Bus überbrücken.
  • Drittanbieterintegration: Ein Drittanbieter verwendet RabbitMQ als Broker, und möchte uns seine Daten senden. Er befindet sich jedoch außerhalb unserer Organisation. Wir können ihm einen SAS-Schlüssel bereitstellen, mit dem er Zugriff auf bestimmte Azure Service Bus-Warteschlangen hat, an die er seine Nachrichten weiterleiten kann.

Die Liste lässt sich beliebig fortführen. Bei den meisten dieser Anwendungsfälle ist eine Weiterleitung mittels Bridging von RabbitMQ zu Azure möglich.

Zunächst müssen Sie ein kostenloses Azure-Konto erstellen, indem Sie sich hier registrieren.

Nachdem Sie sich bei Ihrem Konto angemeldet haben, wechseln Sie zum Azure-Portal. Erstellen Sie dort einen neuen Azure Service Bus-Namespace. Bei Namespaces handelt es sich um die Bereichscontainer, in denen sich unsere Messagingkomponenten wie Warteschlangen und Themen befinden.

Hinzufügen eines neuen Azure Service Bus-Namespace

Klicken Sie im Azure-Portal auf das große Plussymbol, um eine neue Ressource hinzuzufügen.

Create resource

Wählen Sie anschließend „Integration“ aus, und klicken Sie auf „Azure Service Bus“, um einen Messagingnamespace zu erstellen:

Select Azure Service bus

Sie werden aufgefordert, die Namespaceinformationen einzugeben. Wählen Sie das Azure-Abonnement aus, das Sie verwenden möchten. Wenn keine Ressourcengruppe vorhanden ist, können Sie eine neue erstellen.

Create namespace

Verwenden Sie rabbitmq für Namespace name. Sie können jedoch einen beliebigen Namen verwenden. Legen Sie East US als Speicherort fest. Wählen Sie Basic als Tarif aus.

Wenn alles ordnungsgemäß verläuft, wird der folgende Bestätigungsbildschirm angezeigt:

Create namespace confirmation

Ihr neuer rabbitmq-Namespace wird nun auch im Azure-Portal angezeigt. Klicken Sie darauf, um auf die Ressource zuzugreifen, damit Sie eine Warteschlange hinzufügen können.

Resource list with new namespace

Erstellen einer Azure Service Bus-Warteschlange

Nachdem Sie den Azure Service Bus-Namespace erstellt haben, klicken Sie links unter Entities auf die Schaltfläche Queues, sodass Sie eine neue Warteschlange hinzufügen können:

Create queue

Der Name der Warteschlange lautet from-rabbitmq – nur zur Erinnerung, woher die Nachrichten stammen. Für alle anderen Optionen können Sie die Standardeinstellungen übernehmen. Sie können sie jedoch auch an die Anforderungen Ihrer App anpassen.

Aktivieren des RabbitMQ Shovel-Plugins

Für die Übertragung von Nachrichten von RabbitMQ zu Azure Service Bus verwenden wir das Shovel-Plugin, das in RabbitMQ enthalten ist. Sie können das Plugin und die zugehörige grafische Benutzeroberfläche mit dem folgenden Befehl aktivieren:

rabbitmq-plugins enable rabbitmq_shovel_management

Möglicherweise müssen Sie diesen Befehl als Root-Benutzer ausführen.

Nun müssen Sie die Anmeldeinformationen zum Herstellen der Verbindung zwischen RabbitMQ und Azure abrufen.

Herstellen einer Verbindung zwischen RabbitMQ und Azure Service Bus

Sie müssen für Ihre Warteschlange eine SAS-Richtlinie erstellen, damit diese von RabbitMQ zum Veröffentlichen von Nachrichten verwendet werden kann. Mithilfe einer SAS-Richtlinie können Sie angeben, welche Aktionen eine externe Partei für Ihre Ressource durchführen darf. Damit soll sichergestellt werden, dass RabbitMQ Nachrichten senden, die Warteschlange jedoch nicht belauschen oder verwalten kann.

Add SAS Policy

Aktivieren Sie das Kontrollkästchen Send, und klicken Sie auf Create, um unsere SAS-Richtlinie hinzuzufügen.

Nachdem Sie die Richtlinie erstellt haben, klicken Sie darauf, um die primäre Verbindungszeichenfolge anzuzeigen. Diese wird verwendet, damit RabbitMQ mit Azure Service Bus kommunizieren kann:

Get SAS Policy

Diese Verbindungszeichenfolge können Sie erst verwenden, nachdem Sie sie in das AMQP-Verbindungsformat von RabbitMQ konvertiert haben. Wechseln Sie also zum Verbindungszeichenfolgenkonverter, fügen Sie im Formular Ihre Verbindungszeichenfolge ein, und klicken Sie auf „Konvertieren“. Daraufhin erhalten Sie eine Verbindungszeichenfolge, die Sie für RabbitMQ verwenden können. (Auf dieser Website wird alles lokal in Ihrem Browser ausgeführt, d. h., Ihre Daten werden nicht versendet.) Sie können den entsprechenden Quellcode auf GitHub aufrufen.

Convert connection string

Öffnen Sie nun das RabbitMQ-Management-Plugin in einem unserer Browser http://localhost:15672/#/dynamic-shovels, und wechseln Sie zu Admin -> Shovel Management. Hier können Sie die neue Shovel-Instanz hinzufügen, mit der Nachrichten aus einer RabbitMQ-Warteschlange an die Azure Service Bus-Warteschlange gesendet werden.

Add RabbitMQ Shovel

Rufen Sie hier die Shovel-Instanz azure auf, und wählen Sie AMQP 0.9.1 als Quellenprotokoll aus. Im Screenshot wird amqp:// angezeigt. Hierbei handelt es sich um den Standard-URI, der eine Verbindung mit einem lokalen RabbitMQ-Server herstellt. Passen Sie diesen an Ihre aktuelle Bereitstellung an.

Auf der Seite der Warteschlange können Sie azure als Namen für Ihre Warteschlange verwenden. Wenn diese Warteschlange nicht vorhanden ist, wird sie von RabbitMQ erstellt. Sie können auch den Namen einer Warteschlange auswählen, die bereits vorhanden ist. Die anderen Optionen können Sie unverändert übernehmen.

Wählen Sie auf der destination-Seite AMQP 1.0 als Protokoll aus. Geben Sie im Feld URI die Verbindungszeichenfolge ein, die Sie im vorherigen Schritt abgerufen haben, als Sie die Azure-Verbindungszeichenfolge in das RabbitMQ-Format konvertiert haben. Diese sollte wie folgt aussehen:

amqps://rabbitmq-shovel:StringOfRandomChars@rabbitmq.servicebus.windows.net:5671/?sasl=plain

Geben Sie im Feld Address den Namen der Azure Service Bus-Warteschlange ein. In unserem Beispiel lautet er from-rabbitmq. Klicken Sie auf Add Shovel. Danach können Sie mit Ihrer Einrichtung Nachrichten empfangen.

Veröffentlichen von Nachrichten auf RabbitMQ in Azure Service Bus

Wechseln Sie in der RabbitMQ-Management-Schnittstelle zu Queues. Wählen Sie die Warteschlange azure aus, und suchen Sie nach dem Bereich Publish message. Es wird ein Formular angezeigt, in dem Sie Nachrichten direkt in der Warteschlange veröffentlichen können. In unserem Beispiel fügen wir first message als Payload hinzu und klicken auf Publish Message:

Publish first message

Kehren Sie zu Azure zurück, und rufen Sie Ihre Warteschlange auf. Klicken Sie im linken Bereich auf Service Bus Explorer und dann auf die Schaltfläche Einsehen. Wenn alles ordnungsgemäß verlaufen ist, enthält Ihre Warteschlange nun zwei Nachrichten. Glückwunsch!

Azure Service Bus Queue

Überprüfen Sie, ob es sich bei der Nachricht tatsächlich um die Nachricht handelt, die Sie über RabbitMQ gesendet haben. Wählen Sie die Registerkarte Peek aus, und klicken Sie auf die Schaltfläche Peek, um die letzten Nachrichten in der Warteschlange abzurufen. Klicken Sie auf die Nachricht, um deren Inhalt zu überprüfen. Die Anzeige sollte wie in der folgenden Abbildung aussehen und Ihre first message sollte angezeigt werden.

Queue peek

Zusammenfassung

Glückwunsch! Sie haben viel erreicht! Sie haben Ihre Nachrichten mit den folgenden Schritten von RabbitMQ an Azure Service Bus gesendet:

  1. Erstellen eines Azure Service Bus-Namespace
  2. Hinzufügen einer Warteschlange zum Namespace
  3. Hinzufügen einer SAS-Richtlinie zu Ihrer Warteschlange
  4. Abrufen der Verbindungszeichenfolge für die Warteschlange
  5. Aktivieren des RabbitMQ Shovel-Plugins und der Management-Schnittstelle
  6. Konvertieren der Azure Service Bus-Verbindungszeichenfolge in das AMQP-Format von RabbitMQ
  7. Hinzufügen einer neuen Shovel-Instanz zu RabbitMQ und Herstellen einer Verbindung mit Azure Service Bus
  8. Veröffentlichen von Nachrichten

Nachdem Sie die vorherigen Schritte ausgeführt haben, haben Sie Bereiche Ihrer Organisation integriert, die außerhalb von Azure liegen. Mithilfe des Shovel-Plugins konnten Sie Nachrichten von RabbitMQ an Azure Service Bus übertragen. Dies hat enorme Vorteile, da Sie jetzt vertrauenswürdigen Drittanbietern gestatten können, ihre Apps mit Ihrer Azure-Bereitstellung zu verbinden.

Am Ende geht es beim Messaging um das Aktivieren von Verbindungen. Mit dieser Technik haben wir gerade eine neue Möglichkeit eröffnet.

Nächste Schritte