Delen via


Service Bus integreren met RabbitMQ

In deze handleiding leert u hoe u berichten verzendt van RabbitMQ naar Service Bus.

Hier volgen enkele scenario's waarin we gebruik kunnen maken van deze mogelijkheden:

  • Edge-instellingen: We hebben een edge-instelling waar we berichten verzenden naar RabbitMQ, maar we willen deze berichten doorsturen naar Azure Service Bus voor verdere verwerking, zodat we veel van de Azure Big Data-mogelijkheden kunnen gebruiken.
  • Hybride cloud: uw bedrijf heeft zojuist een derde partij aangeschaft die RabbitMQ gebruikt voor hun berichtbehoeften. Ze bevinden zich in een andere cloud. Terwijl ze overstappen naar Azure, kunt u al beginnen met het delen van gegevens door RabbitMQ te overbruggen met Azure Service Bus.
  • Integratie van derden: een derde partij gebruikt RabbitMQ als broker en wil hun gegevens naar ons verzenden, maar ze zijn buiten onze organisatie. We kunnen hen voorzien van SAS-sleutel die hen toegang geeft tot een beperkte set Azure Service Bus-wachtrijen waar ze hun berichten naar kunnen doorsturen.

De lijst gaat verder, maar we kunnen de meeste van deze use cases oplossen door RabbitMQ te overbruggen naar Azure.

Eerst moet u een gratis Azure-account maken door u hier aan te melden

Zodra u bent aangemeld bij uw account, gaat u naar Azure Portal en maakt u een nieuwe Azure Service Bus-naamruimte. Naamruimten zijn de bereikcontainers waar onze berichtenonderdelen zich bevinden, zoals wachtrijen en onderwerpen.

Een nieuwe Azure Service Bus-naamruimte toevoegen

Klik in Azure Portal op de grote plusknop om een nieuwe resource toe te voegen

Resource maken

Selecteer Vervolgens Integratie en klik op Azure Service Bus om een berichtennaamruimte te maken:

Azure Service Bus selecteren

U wordt gevraagd de naamruimtegegevens in te voeren. Selecteer het Azure-abonnement dat u wilt gebruiken. Als u geen resourcegroep hebt, kunt u een nieuwe maken.

Een naamruimte maken

Gebruik rabbitmq hiervoor Namespace name, maar het kan alles zijn wat u wilt. East US Stel vervolgens in voor de locatie. Kies Basic als prijscategorie.

Als alles goed is gegaan, ziet u het volgende bevestigingsscherm:

Bevestiging van naamruimte maken

Vervolgens ziet u in Azure Portal dat uw nieuwe rabbitmq naamruimte daar wordt vermeld. Klik erop om toegang te krijgen tot de resource, zodat u er een wachtrij aan kunt toevoegen.

Resourcelijst met nieuwe naamruimte

Onze Azure Service Bus-wachtrij maken

Nu u uw Azure Service Bus-naamruimte hebt, klikt u op de Queues knop aan de linkerkant, onder Entities, zodat u een nieuwe wachtrij kunt toevoegen:

Wachtrij maken

De naam van de wachtrij is from-rabbitmq net als een herinnering aan waar de berichten vandaan komen. U kunt alle andere opties als standaardinstellingen laten staan, maar u kunt ze aanpassen aan de behoeften van uw app.

De RabbitMQ Shovel-invoegtoepassing inschakelen

Om berichten van RabbitMQ naar Azure Service Bus te verzenden, gebruiken we de Shovel-invoegtoepassing die is verpakt met RabbitMQ. U kunt de invoegtoepassing en de visuele interface inschakelen met deze opdracht:

rabbitmq-plugins enable rabbitmq_shovel_management

Mogelijk moet u die opdracht uitvoeren als root.

Nu is het tijd om de referenties op te halen die nodig zijn voor het verbinden van RabbitMQ met Azure.

RabbitMQ verbinden met Azure Service Bus

U moet een SAS (Shared Access Policy ) maken voor uw wachtrij, zodat RabbitMQ berichten naar de wachtrij kan publiceren. Met een SAS-beleid kunt u opgeven wat externe partijen met uw resource mogen doen. Het idee is dat RabbitMQ berichten kan verzenden, maar niet naar de wachtrij luistert of beheert.

SAS-beleid toevoegen

Schakel het Send selectievakje in en klik Create vervolgens om ons SAS-beleid in te stellen.

Zodra het beleid is gemaakt, klikt u erop om de primaire verbindingsreeks weer te geven. We gaan het gebruiken om RabbitMQ te laten praten met Azure Service Bus:

SAS-beleid ophalen

Voordat u die verbindingsreeks kunt gebruiken, moet u deze converteren naar de AMQP-verbindingsindeling van RabbitMQ. Ga dus naar het hulpprogramma verbindingsreeks converter en plak uw verbindingsreeks in het formulier en klik op Converteren. Je krijgt een verbindingsreeks dat RabbitMQ klaar is. (Deze website voert alles lokaal uit in uw browser, zodat uw gegevens niet via de kabel worden verzonden). U hebt toegang tot de broncode op GitHub.

Verbindingsreeks converteren

Open nu de invoegtoepassing RabbitMQ-beheer in onze browsers http://localhost:15672/#/dynamic-shovels en ga naar Admin -> Shovel Management, waar u uw nieuwe shovel kunt toevoegen die ervoor zorgt dat berichten van een RabbitMQ-wachtrij naar uw Azure Service Bus-wachtrij worden verzonden.

RabbitMQ Shovel toevoegen

Roep hier uw Shovel azure aan en kies AMQP 0.9.1 het bronprotocol. In de schermopname hebben amqp://we de standaard-URI die ons verbindt met een lokale RabbitMQ-server. Zorg ervoor dat u dit aanpast aan uw huidige implementatie.

Aan de kant van de wachtrij kunt u deze gebruiken azure als de naam van uw wachtrij. Als deze wachtrij niet bestaat, maakt RabbitMQ deze voor u. U kunt ook de naam kiezen van een wachtrij die al bestaat. U kunt de andere opties standaard laten staan.

Kies vervolgens aan de destination zijkant van dingen de optie AMQP 1.0 als protocol. Voer in het URI veld de verbindingsreeks in die u hebt ontvangen uit de vorige stap, hebt u uw Azure-verbindingsreeks geconverteerd naar de RabbitMQ-indeling. Dit ziet er als volgt uit:

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

In het Address veld voeren we de naam in van uw Azure Service Bus-wachtrij, in dit geval, het is aangeroepen from-rabbitmq. Klik op Add Shovelen uw installatie moet gereed zijn om berichten te ontvangen.

Berichten publiceren van RabbitMQ naar Azure Service Bus

In de RabbitMQ Management-interface kunnen we naartoe Queuesgaan, de azure wachtrij selecteren en zoeken naar het Publish message deelvenster. Er wordt een formulier weergegeven waarmee u berichten rechtstreeks naar uw wachtrij kunt publiceren. Voor ons voorbeeld gaan we gewoon toevoegen first message als de Payload en druk op Publish Message:

Eerste bericht publiceren

Ga terug naar Azure en inspecteer uw wachtrij. Klik Service Bus Explorer in het linkerdeelvenster en klik vervolgens op de knop Korte weergave . Als alles goed is gegaan, ziet u dat uw wachtrij nu één bericht heeft. Yay, gefelicit!

Azure Service Bus-wachtrij

Maar laten we ervoor zorgen dat het bericht is dat u hebt verzonden van RabbitMQ. Selecteer het Peek tabblad en klik op de Peek knop om de laatste berichten in uw wachtrij op te halen. Klik op het bericht om de inhoud ervan te controleren. Als het goed is, ziet u iets zoals in de onderstaande afbeelding waarin uw first message afbeelding wordt vermeld.

Wachtrij bekijken

Laten we eens een samenvatting maken

Gefeliciteerd! Je hebt veel bereikt! U hebt uw berichten van RabbitMQ naar Azure Service Bus kunnen ophalen. Laten we de stappen eens samenvatten:

  1. Een Azure Service Bus-naamruimte maken
  2. Een wachtrij toevoegen aan de naamruimte
  3. Een SAS-beleid toevoegen aan uw wachtrij
  4. De wachtrij ophalen verbindingsreeks
  5. De RabbitMQ shovel plugin inschakelen en de beheerinterface
  6. De Azure Service Bus-verbindingsreeks converteren naar de AMQP-indeling van RabbitMQ
  7. Een nieuwe shovel toevoegen aan RabbitMQ en deze verbinden met Azure Service Bus
  8. Berichten publiceren

Door de vorige stappen te volgen, hebt u gebieden van uw organisatie geïntegreerd die zich buiten Azure bevonden. Met de Shovel-invoegtoepassing kunt u berichten verzenden van RabbitMQ naar Azure Service Bus. Dit heeft enorme voordelen omdat u nu vertrouwde derden kunt toestaan om hun apps te verbinden met uw Azure-implementatie.

Uiteindelijk gaat berichten over het inschakelen van verbindingen en met deze techniek hebben we zojuist een nieuwe geopend.

Volgende stappen