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
Selecteer Vervolgens Integratie en klik op Azure Service Bus om een berichtennaamruimte te maken:
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.
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:
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.
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:
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.
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:
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.
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.
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 Shovel
en 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 Queues
gaan, 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
:
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!
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.
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:
- Een Azure Service Bus-naamruimte maken
- Een wachtrij toevoegen aan de naamruimte
- Een SAS-beleid toevoegen aan uw wachtrij
- De wachtrij ophalen verbindingsreeks
- De RabbitMQ shovel plugin inschakelen en de beheerinterface
- De Azure Service Bus-verbindingsreeks converteren naar de AMQP-indeling van RabbitMQ
- Een nieuwe shovel toevoegen aan RabbitMQ en deze verbinden met Azure Service Bus
- 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
- Meer informatie over Azure Service Bus
- Meer informatie over AMQP 1.0-ondersteuning in Service Bus