Integrera Service Bus med RabbitMQ
I den här guiden ska vi lära oss hur du skickar meddelanden från RabbitMQ till Service Bus.
Här är några scenarier där vi kan använda dessa funktioner:
- Edge-installationer: Vi har en gränskonfiguration där vi skickar meddelanden till RabbitMQ, men vi vill vidarebefordra dessa meddelanden till Azure Service Bus för vidare bearbetning, så att vi kan använda många av Azure Big Data-funktionerna.
- Hybrid Cloud: Ditt företag har precis förvärvat en tredje part som använder RabbitMQ för sina meddelandebehov. De finns i ett annat moln. När de övergår till Azure kan du redan börja dela data genom att överbrygga RabbitMQ med Azure Service Bus.
- Tredjepartsintegrering: En tredje part använder RabbitMQ som mäklare och vill skicka sina data till oss, men de ligger utanför vår organisation. Vi kan ge dem SAS-nyckel som ger dem åtkomst till en begränsad uppsättning Azure Service Bus-köer där de kan vidarebefordra sina meddelanden till.
Listan fortsätter, men vi kan lösa de flesta av dessa användningsfall genom att överbrygga RabbitMQ till Azure.
Först måste du skapa ett kostnadsfritt Azure-konto genom att registrera dig här
När du har loggat in på ditt konto går du till Azure Portal och skapar ett nytt Azure Service Bus-namnområde. Namnområden är de omfångscontainrar där våra meddelandekomponenter kommer att finnas, till exempel köer och ämnen.
Lägga till ett nytt Azure Service Bus-namnområde
I Azure Portal klickar du på den stora plusknappen för att lägga till en ny resurs
Välj sedan Integrering och klicka på Azure Service Bus för att skapa ett meddelandenamnområde:
Du uppmanas att ange namnområdesinformationen. Ange den prenumeration som du vill använda. Om du inte har någon resursgrupp kan du skapa en ny.
Använd rabbitmq
för Namespace name
, men det kan vara vad du vill. Ange East US
sedan för platsen. Välj Basic
som prisnivå.
Om allt gick bra bör du se följande bekräftelseskärm:
Sedan på Azure Portal visas ditt nya rabbitmq
namnområde där. Klicka på den för att komma åt resursen så att du kan lägga till en kö i den.
Skapa vår Azure Service Bus-kö
Nu när du har ditt Azure Service Bus-namnområde klickar du på Queues
knappen till vänster under Entities
, så att du kan lägga till en ny kö:
Namnet på kön är from-rabbitmq
precis som en påminnelse om varifrån meddelandena kommer. Du kan lämna alla andra alternativ som standard, men du kan ändra dem så att de passar appens behov.
Aktivera plugin-programmet RabbitMQ Spade
För att skicka meddelanden från RabbitMQ till Azure Service Bus använder vi plugin-programmet Spade som medföljer RabbitMQ. Du kan aktivera plugin-programmet och dess visuella gränssnitt med det här kommandot:
rabbitmq-plugins enable rabbitmq_shovel_management
Du kan behöva köra kommandot som rot.
Nu är det dags att hämta de autentiseringsuppgifter som krävs för att ansluta RabbitMQ till Azure.
Ansluta RabbitMQ till Azure Service Bus
Du måste skapa en SAS (Shared Access Policy ) för din kö, så att RabbitMQ kan publicera meddelanden till den. Med en SAS-princip kan du ange vilken extern part som får göra med resursen. Tanken är att RabbitMQ kan skicka meddelanden, men inte lyssna eller hantera kön.
Markera rutan Send
och klicka sedan för Create
att ha vår SAS-princip på plats.
När principen har skapats klickar du på den för att se den primära anslutningssträngen. Vi ska använda den för att låta RabbitMQ prata med Azure Service Bus:
Innan du kan använda den anslutningssträng måste du konvertera den till RabbitMQ:s AMQP-anslutningsformat. Gå till verktyget anslutningssträng konverterare och klistra in anslutningssträng i formuläret och klicka på konvertera. Du får en anslutningssträng som är RabbitMQ redo. (Den webbplatsen kör allt lokalt i webbläsaren så att dina data inte skickas via kabeln). Du kan komma åt källkoden på GitHub.
Öppna nu plugin-programmet RabbitMQ-hantering i våra webbläsare http://localhost:15672/#/dynamic-shovels
och gå till Admin -> Shovel Management
, där du kan lägga till din nya spade som tar hand om att skicka meddelanden från en RabbitMQ-kö till din Azure Service Bus-kö.
Här anropar du spaden azure
och väljer AMQP 0.9.1
som källprotokoll. På skärmbilden har amqp://
vi , vilket är standard-URI:n som ansluter oss till en lokal RabbitMQ-server. Se till att anpassa det till din aktuella distribution.
På kösidan av saker kan du använda azure
som namnet på din kö. Om den kön inte finns skapar RabbitMQ den åt dig. Du kan också välja namnet på en kö som redan finns. Du kan lämna de andra alternativen som standard.
Välj sedan som protokoll på sidan destination
av saker AMQP 1.0
. I fältet URI
anger du den anslutningssträng som du fick från föregående steg om du konverterade din Azure-anslutningssträng till RabbitMQ-formatet. Den bör se ut så här:
amqps://rabbitmq-shovel:StringOfRandomChars@rabbitmq.servicebus.windows.net:5671/?sasl=plain
I fältet Address
anger vi namnet på din Azure Service Bus-kö. I det här fallet kallades from-rabbitmq
den . Klicka på Add Shovel
och konfigurationen bör vara redo att börja ta emot meddelanden.
Publicera meddelanden från RabbitMQ till Azure Service Bus
I gränssnittet RabbitMQ Management kan vi gå till Queues
, välja azure
kön och söka efter panelen Publish message
. Det visas ett formulär som gör att du kan publicera meddelanden direkt till kön. I vårt exempel ska vi bara lägga first message
till som och trycka på Payload
Publish Message
:
Gå tillbaka till Azure och inspektera din kö. Klicka Service Bus Explorer
på den vänstra panelen och klicka sedan på knappen Granska . Om allt gick bra ser du att din kö nu har ett meddelande. Yay, grattis!
Men låt oss se till att meddelandet är det du skickade från RabbitMQ. Välj fliken Peek
och klicka på Peek
knappen för att hämta de sista meddelandena i kön. Klicka på meddelandet för att kontrollera innehållet. Du bör se något som liknar bilden nedan där du first message
visas.
Nu ska vi sammanfatta
Grattis! Du har uppnått mycket! Du har lyckats hämta dina meddelanden från RabbitMQ till Azure Service Bus. Nu ska vi sammanfatta stegen:
- Skapa ett Azure Service Bus-namnområde
- Lägga till en kö i namnområdet
- Lägga till en SAS-princip i kön
- Hämta kön anslutningssträng
- Aktivera plugin-programmet RabbitMQ spade och hanteringsgränssnittet
- Konvertera Azure Service Bus-anslutningssträng till RabbitMQ:s AMQP-format
- Lägg till en ny spade i RabbitMQ och anslut den till Azure Service Bus
- Publicera meddelanden
Genom att följa de föregående stegen har du integrerat områden i din organisation som fanns utanför Azure. Med plugin-programmet Spade kan du skicka meddelanden från RabbitMQ till Azure Service Bus. Detta har enorma fördelar eftersom du nu kan tillåta betrodda tredje parter att ansluta sina appar till din Azure-distribution.
I slutändan handlar meddelanden om att aktivera anslutningar, och med den här tekniken har vi precis öppnat en ny.
Nästa steg
- Läs mer om Azure Service Bus
- Läs mer om AMQP 1.0-stöd i Service Bus