Azure Service Bus

Vaak verplaatsen mensen gevoelige gegevens van cloudapplicaties naar andere applicaties zonder zich al te veel zorgen te maken over hoe veilig de overdracht is. Ze realiseren zich niet dat als dergelijke gevoelige informatie in verkeerde handen valt, dit catastrofaal kan zijn voor de organisatie.

Dergelijke organisaties zouden het door Microsoft beheerde berichtenplatform genaamd Azure Service Bus moeten omarmen. Azure Service Bus gebruikt berichtenverkeer om gegevens over te dragen. Het stuurt de berichten via wachtrijen of onderwerpen, afhankelijk van de vereisten.

Azure
2 september 2020
Martijn van der Put

Wat is Azure service bus?

Azure beschikt over een berichtenservice genaamd Azure Service Bus die een verbinding faciliteert tussen apparaten, applicaties en andere services die op de cloud draaien. In Azure Service Bus kan de asynchrone overdracht van gegevens worden uitgevoerd omdat het applicaties en services kan ontkoppelen, wat op zijn beurt leidt tot betrouwbare en veilige gegevensoverdracht. Azure Service Bus biedt een uniform platform voor het delen van gegevens tussen verschillende applicaties en apparaten.


Wat is de meest voorkomende manier van gegevensoverdracht?

Gegevensoverdracht met behulp van Azure Service Bus wordt veelal gedaan met behulp van berichten. Berichten kunnen tekst, JSON of XML-bestanden bevatten. Omdat services en applicaties zijn ontkoppeld, hoeven zowel de verzender als de ontvanger niet tegelijkertijd online te zijn. Dit vereist een locatie waar de berichten veilig kunnen worden opgeslagen nadat ze door de verzender zijn verzonden en totdat ze door de ontvanger zijn ontvangen.


Wat is een namespace? 

Een belangrijke term die hier geïntroduceerd moet worden, is een 'Namespace'. Het is een container waarin alle elementen met betrekking tot berichten en hun overdracht worden opgeslagen. Berichten kunnen typisch worden overgedragen via wachtrijen of onderwerpen, en een namespace kan meerdere wachtrijen en onderwerpen bevatten.

 

Wanneer kies je voor een wachtrij en wanneer voor een onderwerp? 

Een wachtrij heeft één verzender en één ontvanger die niet tegelijkertijd actief hoeven te zijn. Zodra de verzender het bericht heeft verzonden, wordt het opgeslagen in de wachtrij totdat de ontvanger het ontvangt en verwerkt. De wachtrij volgt het first in first out (FIFO) principe, waarbij het bericht dat als eerste door de verzender is verzonden, als eerste door de ontvanger wordt ontvangen enzovoort. Elk bericht wordt bij aankomst voorzien van een tijdstempel en opgeslagen in de wachtrij in de volgorde van binnenkomst. Berichten worden aan de ontvanger geleverd in pull-modus, dat wil zeggen: alleen wanneer de ontvanger om het bericht vraagt.



Een onderwerp heeft één verzender maar meerdere ontvangers. Het wordt gebruikt wanneer een verzender hetzelfde bericht naar meerdere ontvangers moet sturen. De verzender is de uitgever en de ontvanger is de abonnee. Een verzender stuurt een bericht naar een onderwerp en vervolgens kan een routeringsregel worden ingesteld waarop abonnees het bericht kunnen aanvragen en ontvangen. Dit gebeurt wanneer een bericht alleen naar een geselecteerd aantal abonnees moet worden verzonden onder alle abonnees van dat onderwerp. Filters moeten ook worden toegevoegd wanneer een subset van alle berichten naar een abonnee moet worden verzonden.

Er zijn drie soorten filters:

  • Boolean (False/true) SQL-filter 
  • SQL-achtige verklaring die kenmerken van het bericht gebruikt 
  • Correlatiefilters die overeenkomen met een groep voorwaarden Als geen van de filters wordt gebruikt, wordt automatisch een standaardfilter gekozen. Het standaardfilter is waar, d.w.z. alle abonnees ontvangen alle berichten die door de verzender zijn verzonden.

Dus het is nu duidelijk dat wanneer een bericht naar één ontvanger moet worden verzonden, een wachtrij wordt gekozen voor de overdracht van het bericht. En wanneer er meerdere abonnees zijn voor een enkel bericht, wordt dan een onderwerp gekozen voor de overdracht van het bericht.



Hoe berichten verzenden en ontvangen van een wachtrij?


Hier wordt een console-applicatie geschreven om een bericht naar een wachtrij van de Azure Service Bus te sturen door gebruik te maken van een QueueClient. Het gebruik van QueueClient is voordelig omdat het een eenvoudig API-oppervlak biedt voor het verzenden van een bericht en een eenvoudig MessagePump-model voor het ontvangen van een bericht. QueueClient wordt gebruikt wanneer de gebruiker een snelle start wil maken met het ontvangen van berichten met zo min mogelijk code. Dit zijn de essentiële benodigdheden voor het verzenden en ontvangen van berichten:

  • .NET Core 
  • Een Azure-abonnement 
  • Een Azure Service Bus-namespace 
  • Een Azure Service Bus-wachtrij of -onderwerp De volgende stappen moeten worden uitgevoerd voor het verzenden en ontvangen van berichten vanuit een wachtrij:

Stap 1: Er moet eerst een console-applicatie worden gemaakt. Dus er wordt een nieuwe .NET Core-applicatie gemaakt.

Stap 2: "Microsoft.Azure.ServiceBus": "1.0.0" moet worden toegevoegd aan ons project.json om een referentie te bieden naar het Microsoft.Azure.ServiceBus-project.

Stap 3: Importeer de pakketten met het trefwoord "using" zoals vermeld in het codefragment.

Stap 4: Er wordt een klasse met de naam "SendingReceiving" gemaakt en de variabelen worden gedeclareerd.

Stap 5: Een taak met de naam "MainAsync" wordt gemaakt onder de hoofdmethode. Dit is het punt van waaruit de uitvoering begint. De taak MainAsync roept de methoden "RegisterOnMessageHandler" en "SendMessagesAsync" aan die worden uitgelegd in de volgende stappen.



Stap 6: Vervolgens wordt een nieuwe methode "RegisterOnMessageHandler" gemaakt die "ProcessMessagesAsync" en "ExceptionReceivedHandler" registreert met de vereiste parameters zoals vermeld.



Stap 7: De laatste methode "SendMessagesAsync" wordt gemaakt om het gewenste aantal berichten naar de wachtrij te verzenden.


Conclusie

Azure Service Bus is een cloudgebaseerde service die een duidelijk kanaal biedt voor gegevensoverdracht tussen de afzender en ontvanger. Het verhoogt het gebruikersgemak vanwege zijn betrouwbaarheid en beschikbaarheid op de markt. 


Wil je meer informatie? Neem dan contact op.

Cookies
Deze site gebruikt geanonimiseerde cookies. Klik op "Akkoord" als je akkoord gaat met het gebruik van cookies, of klik op "Aanpassen" om je voorkeuren te bepalen.
Deze site gebruikt geanonimiseerde cookies.