RabbitMQ

Een typisch softwarestuk vereist doorgaans messaging om verbinding te maken en zichzelf te schalen. Dergelijke toepassingen verbinden zich met elkaar, met een apparaat of met gegevens van gebruikers met behulp van messaging. Hierdoor lijkt het alsof de componenten één grote toepassing zijn. Messaging is een asynchrone taak die de toepassingen ontkoppelt door de taak van het ontvangen en verzenden van berichten te scheiden.

Digital marketing
01 april 2021
Martijn van der Put

RabbitMQ is een berichtenuitwisselingsplatform die de toepassingen een gemeenschappelijk platform biedt om berichten te verzenden en ontvangen en de berichten tevens veilig houdt totdat ze zijn ontvangen. In dit artikel geven we antwoord op de vraag: Wat is RabbitMQ en hoe is het nuttig? 


Wat is RabbitMQ?

RabbitMQ in .NET Core is een open-source en uitbreidbare oplossing voor berichtenwachtrijen die volledig gratis is voor iedereen om te gebruiken. RabbitMQ wordt gebruikt met Message Queuing Telemetry Transport (MQTT), wat een van de populaire messaging-oplossingen is. Het is daarnaast een berichtenmakelaar die het Advanced Message Queuing Protocol (AMQP) begrijpt.

RabbitMQ is een schaalbaar, beschikbaar en tolerant voor fouten. RabbitMQ is geïmplementeerd in Erlang OTP, een technologie die wordt gebruikt om een oplossing schaalbaar en tolerant te maken voor fouten. De gebouwde oplossingen zijn in staat om gelijktijdige bewerkingen uit te voeren in grote aantallen. 

De protocollen die door RabbitMQ ondersteund zijn

  • AMQP 0-9-1
  • STOMP
  • MQTT
  • AMQP 1.0
  • HTTP en WebSocket

RabbitMQ belangrijkste termen

- Bericht: berichten kunnen elk type informatie bevatten. Hierbij gaat het om eenvoudige tekstberichten tot gecodeerde objecten.

- Kanaal: een communicatielijn die logisch van aard is en de uitgever verbindt met de luisteraar.

- Wachtrij: RabbitMQ-wachtrij volgt het first in first out-algoritme voor opslaan van berichten en uitgevers.

- Verbinding: tussen server en client. Gebaseerd op protocollen en noodzakelijk voor het hebben van kanalen.

- Consument: de consument is in dit geval de client die is verbonden met het kanaal dat luistert naar de wachtrij om de berichten te lezen die erop gepubliceerd zijn.

- Uitgever: de client die is verbonden met de wachtrij waarop hij de berichten publiceert.

- Melding: de servicestatus wordt gecontroleerd en aangepast om waarschuwingen af te geven.

- 'Dead Letter': in RabbitMQ worden de berichten die niet gelezen zijn door luisteraars opgeslagen in de 'dead letters'.

- Route: de RabbitMQ-routes sturen berichten naar de juiste wachtrijen op basis van hun uitwisselingen en routeringssleutels.

- Uitwisseling: een algoritme dat beslist in welke wachtrij het bericht opgeslagen wordt.

- Bindings: de link tussen wachtrij en uitwisseling.

Hoe werkt RabbitMQ?

Er zijn meerdere uitwisselingen die aangeboden worden door RabbitMQ. De meeste gebruikersscenario’s van messaging worden hierdoor gedekt. Elke consument ontvangt de wachtrij op basis van logica. Er zijn 4 soorten logica die gebruikt worden in Exchange: 

1. Directe uitwisseling: komt overeen met de routeringssleutel van het inkomende bericht met de bindingssleutel van de wachtrij. Vervolgens levert het inkomende bericht af aan de wachtrij waarvan de bindingssleutel exact overeenkomt. Het werkt als een één-op-één berichtafleversysteem, omdat het routeringssleutels gebruikt als wachtrijnaam om de wachtrij te binden. Het wordt eenvoudig om het bericht af te leveren aan meerdere wachtrijen door bindingssleutels te gebruiken voor meerdere doeleinden.

2. Topic Exchange: deze uitwisseling komt overeen met de routeringssleutel van het inkomende bericht met de ‘wildcard-bindingssleutel’ van de wachtrij. Vervolgens levert de uitwisseling het inkomende bericht af aan de wachtrij. Voor een samengestelde routeringssleutel kunnen er wildcards zijn voor de overeenkomst van bindingssleutels. Bijvoorbeeld, logs.UIi.error en logs.accounting.error zullen de overeenkomende routeringssleutels zijn voor de bindingssleutel logs.*.error. Dit helpt de programmeur om eenvoudige services te schrijven door het gebruik van deze uitwisseling, waar goed afgebakende logica aanwezig is en het bericht aankomt bij de juiste services via het gebruik van RabbitMQ.

3. Fanout exchange: bepaalde berichten moeten aan alle wachtrijen afgeleverd worden. Wanneer dit het geval is, kan fanout-uitwisseling gebruikt worden in plaats van het schrijven van grote blokken multicast-logische codes in de applicatie. Zonder dat de bindingssleutel gespecificeerd hoeft te worden, is elke service gebonden aan de juiste wachtrij voor de uitwisseling. Dit gaat automatisch, door middel van RabbitMQ Fanout Exchange. Zelfs als een bindingssleutel wordt gespecificeerd tijdens het coderen, wordt deze door de fanout-uitwisseling genegeerd. 

4. Headers exchange: de structuur van het Advanced Message Queuing Protocol (AMQP) wordt door header-uitwisselingen verbeterd. De metadata die aan ieder bericht toegevoegd wordt dat door AMQP verzonden wordt, wordt een header genoemd. 



Voordelen van het gebruik van RabbitMQ in .NET Core

  • In JSON-taal biedt het multi-platform communicatie
  • Het biedt asynchrone operaties, zodat services niet hoeven te wachten.
  • Het is een open source met een grote gemeenschap die eraan werkt, waardoor de functies regelmatig verbeterd worden.
  • Een breed scala aan talen wordt geaccepteerd. 
  • Om berichten uit te wisselen worden verschillende soorten protocollen gebruikt.


Conclusie

Er kan geconcludeerd worden dat bijna alle communicatie via RabbitMQ gedaan kan worden. Het blijkt steeds meer een van de meest gevraagde technologieën voor communicatie tussen de apparaten van gebruikers en applicaties. 

Wil je meer informatie? Vul dan onderstaand formulier in!

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.