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.