RabbitMQ uitgelegd in 5 minuten of minder

We zullen vandaag zien hoe we de laadtijd van uw pagina’s kunnen versnellen door de zwaarste verwerking asynchroon uit te voeren, allemaal heel eenvoudig beheerd dankzij RabbitMQ.

De stabiliteit en snelheid van een applicatie of website behoren zeker tot de belangrijkste factoren voor gebruikers. Wie heeft er nog nooit een site verlaten voordat hij de eerste pagina heeft gezien omdat het te lang duurde?

Wat is RabbitMQ

RabbitMQ is een open-source, gedistribueerde en schaalbare berichtenmakelaar die dient als tussenpersoon voor efficiënte communicatie tussen producenten en consumenten.

RabbitMQ implementeert het applicatielaag-berichtenprotocol AMQP, dat gericht is op het communiceren van asynchrone berichten met leveringsgarantie door ontvangstbevestigingen van berichten van de makelaar naar de producent en van de consument naar de producent.

Hoe werkt RabbitHQ

Op een vereenvoudigde manier definieert RabbitMQ wachtrijen die berichten opslaan die door producenten zijn verzonden totdat consumerende applicaties het bericht ontvangen en verwerken. Het stelt ons in staat om gedistribueerde systemen te ontwerpen en te implementeren, waarbij een systeem is opgedeeld in onafhankelijke modules die met elkaar communiceren door middel van berichten.

Zoals alle communicatie hebben we een producent, een bericht en een ontvanger nodig. In het midden van de taart staat RabbitMQ, de plek waar het bericht op de ontvanger wacht.

Laten we beter begrijpen hoe het werkt door de soorten uitwisselingen te kennen die de uitwisseling van berichten vertegenwoordigen.

Wissel typen uit

Wanneer we via uitwisselingen een bericht via RabbitMQ verzenden, sturen we het niet rechtstreeks naar een wachtrij; zodat andere systemen het kunnen lezen, sturen we het naar een centrale, die verantwoordelijk is voor het doorsturen van berichten naar verschillende wachtrijen.

Afbeelding tegoed: CloudAQMP

De soorten uitwisselingen zijn Direct, Fanout, Topic en Readers.

Directe uitwisseling

Stel dat een producent drie consumenten een aankoopbevestiging moet sturen. Dat wil zeggen, het systeem moet communiceren met drie andere verschillende systemen om de aankoop te doen.

Omdat RabbitMQ het bericht afzonderlijk naar elke wachtrij stuurt, is er een momentum om ervoor te zorgen dat deze andere systemen het bericht rechtstreeks ontvangen.

Normaal gesproken stuurt de centrale het bericht door naar de wachtrijen, maar vaak willen we niet dat onze berichten naar alle wachtrijen worden gestuurd. Daarom zijn er verschillende voorwaarden die we kunnen hanteren om een ​​uitwisseling te laten werken.

  Hoe een PKPASS-bestand in Apple Wallet te importeren?

U kunt uw bericht dus naar slechts één consument laten versturen; in plaats van naar iedereen te worden gestuurd.

Bindingssleutel: om een ​​wachtrij met een centrale te verbinden, moet u een binding maken, een relatie tussen een wachtrij en een centrale, zoals een connector.

Routeringssleutel: in deze binding kunnen we ook een element maken dat een routeringssleutel wordt genoemd, wat met andere woorden een sleutel is om onze berichten door te sturen naar een specifieke wachtrij.

Als u een routeringssleutel X, een routeringssleutel Y en een routeringssleutel Z hebt, gaat het bericht met routeringssleutel Y bijvoorbeeld door wachtrij Y en wordt het rechtstreeks afgeleverd bij de consument die u hebt gedefinieerd om het bericht te ontvangen.

Op deze manier kunnen we meerdere wachtrijen hebben die zijn aangesloten op een centrale, maar tegelijkertijd kunnen ze ook verschillende relaties hebben met de centrales met behulp van de routeringssleutels.

Fanout-uitwisseling

Wanneer het bericht naar de centrale wordt verzonden, wordt het verzonden naar alle wachtrijen die erop zijn aangesloten. Dus als je 10 wachtrijen hebt aangesloten op een fanout-uitwisseling, zullen alle wachtrijen het verzonden bericht ontvangen.

Onderwerp uitwisseling

Het is een van de meest flexibele uitwisselingen, waardoor we berichten kunnen sturen op basis van het onderwerp. En op basis van de manier waarop u de routeringssleutels een naam geeft, is het mogelijk om patronen van regels en relaties tussen systemen te creëren.

Bijvoorbeeld: routeringssleutel (x.*); routeringssleutel(*.z); routeringssleutel (*.y.*).

Wat is AQMP in RabbitMQ

AMQP (Advanced Message Queuing Protocol) is een open berichtenprotocol dat wordt gebruikt om het transport van berichten tussen meerdere applicaties te definiëren. Het is vergelijkbaar met de HTTP- en TCP-protocollen omdat het een protocol op draadniveau is, behalve dat het asynchroon transport mogelijk maakt.

RabbitMQ koos om verschillende redenen voor de implementatie van AMQP. De eerste is dat dit protocol wordt beschreven als een standaard voor middleware, in tegenstelling tot JMS, dat een API definieert.

Een internationaal consortium, waaronder grote bedrijven als Red Hat, Cisco Systems en Microsoft, schreef deze AMQP-specificatie. De tweede is de interoperabiliteit van dit protocol, waardoor elke toepassing die AMQP implementeert, kan communiceren met een AMQP-broker.

AMQP is niet het enige protocol dat door RabbitMQ wordt gebruikt. De onderstaande afbeelding geeft alle protocollen, talen en API’s weer die zijn geïmplementeerd en/of ondersteund door RabbitMQ.

Beste eigenschappen van RabbitMQ

Naast het mogelijk maken van de integratie van verschillende applicaties via berichten asynchroon en vanaf verschillende locaties, biedt RabbitMQ ons andere functies die het erg populair hebben gemaakt in de wereld van berichtenmakelaars:

  Een Skype-contact volgen

Betrouwbare opslag

RabbitMQ bevat verschillende functies waarmee het de bezorging van berichten kan garanderen. Onder deze biedt het opslag wanneer geen enkele consument het bericht kan ontvangen. Hiermee kunnen consumenten de bezorging van het bericht accepteren om er zeker van te zijn dat het met succes is verwerkt.

Als de verwerking mislukt, zorgt RabbitMQ ervoor dat het bericht opnieuw in de wachtrij wordt geplaatst om te worden geconsumeerd door een andere instantie van de consument of om opnieuw te worden verwerkt door dezelfde consument die aanvankelijk faalde wanneer het herstelt.

RabbitMQ garandeert tevens de afleveringsvolgorde van de berichten; dat wil zeggen, ze worden geconsumeerd in dezelfde volgorde waarin ze in de RabbitMQ-wachtrijen zijn aangekomen.

Creatie van clusters

Hoewel RabbitMQ geweldige prestaties levert door duizenden berichten per seconde te verwerken, moet het soms grotere aantallen berichten kunnen verwerken zonder de prestaties van de applicatie te beïnvloeden.

Hiervoor maakt RabbitMQ het mogelijk om clusters te creëren om de oplossing horizontaal te schalen, wat transparant is voor zowel producenten als consumenten.

Hoog beschikbare wachtrijen

In RabbitMQ kunnen wachtrijen worden gerepliceerd over meerdere knooppunten in een cluster, zodat de makelaar in het geval van een knooppuntstoring of downtime berichten van producenten kan blijven ontvangen en deze aan de juiste consumenten kan bezorgen.

Flexibele routing

In RabbitMQ kunnen flexibele routeringsregels worden gedefinieerd, zelfs volgens een bepaald patroon, om berichten tussen uitwisselingen en wachtrijen door middel van bindingen te routeren.

Ondersteuning voor meerdere protocollen

Naast ondersteuning van het AMQP-protocol, ondersteunt RabbitMQ STOMP, MQTT en HTTP via plug-ins. Het bevat ook authenticatie- en toegangscontrolemechanismen voor de componenten van elke broker.

Real-life use-cases van RabbitMQ

De belangrijkste use cases van RabbitMQ zijn het mogelijk maken van asynchroniciteit tussen applicaties, het verminderen van de koppeling tussen applicaties, het verspreiden van alerts en het controleren van de wachtrij van jobs op de achtergrond.

De praktische use-cases van RabbitMQ zijn echter in e-commerce, waar t wordt gebruikt om uw verkooporders te manipuleren, te verwerken en door te sturen naar systemen in andere sectoren, zoals distributie en het uitgeven van facturen.

Bij het verwerken van bestellingen kunt u uw verkoopbericht doorsturen naar het distributiecentrum en een factuurgebied. In dit schema werkt alles horizontaal, volgens het asynchrone patroon voor het verzenden van berichten, maar het is vaak mogelijk om een ​​actie naar meerdere wachtrijen te sturen.

In navolging van het vorige voorbeeld kan deze functie erg handig zijn wanneer de klant een aankoop doet en het product moet worden voorbereid voor distributie, transport en facturen.

  21 Veelgestelde OOP-interviewvragen en antwoorden die u vandaag moet weten

En aangezien elk van deze sectoren een ander systeem is, is het doel van RabbitMQ om al deze berichten door te sturen naar de overeenkomstige systemen.

Rabbit MQ-alternatieven:

RabbitMQ is een stuk eenvoudiger dan het lijkt, en er zijn verschillende alternatieven, waaronder:

#1. IJzerMQ

IronMQ is supersnelle berichtenwachtrijsoftware. Het is zeer beschikbaar, duurzaam van ontwerp en bij voorkeur voor een eenmalige levering. IronMQ is de krachtigste cloud-native oplossing voor moderne applicatie-architectuur.

Het ondersteunt push-wachtrijen, pull-wachtrijen en lange peilingen, waardoor peilingsverzoeken langer open blijven. Bovendien kan het gebruik maken van meerdere high-availability datacenters, wat de schaalbaarheid vergemakkelijkt.

U kunt implementeren in de cloud, op gedeelde of speciale hardware of on-premises. Het heeft ook een reeks clientbibliotheken met gemakkelijk leesbare documentatie.

#2. Apache Kafka

Kafka is een platform met een sterke aanwezigheid in gedistribueerde streaming van evenementen. In de kern is Kafka ontworpen als een gerepliceerd, gedistribueerd, persistent commit-logboek.

De grootste bruikbaarheid is om gebeurtenisgestuurde microservices of grootschalige stroomverwerkingstoepassingen aan te drijven, waarbij gebeurtenissen automatisch asynchroon binnen het cluster worden gerepliceerd voor fouttolerantie en hoge beschikbaarheid.

#3. Apache ActiveMQ

ActiveMQ is een op Java gebaseerde multiprotocol Message Broker. Hiermee kunnen we applicaties integreren met behulp van het AMQP message queuing-protocol op de applicatielaag.

Het implementeert verschillende protocollen voor integratie, zoals onder andere JMS (native Java) en Stomp (die kunnen worden gebruikt door PHP-applicaties).

Bovendien heeft Amazon zijn “beheerde” versie genaamd Amazon MQ, die het gebruik van de service veel gemakkelijker maakt.

laatste woorden

Messaging brokers zijn van oudsher een belangrijk onderdeel binnen de architecturen van organisaties. Maar met de toename van het aantal gebruikers dat via verschillende kanalen bedrijfssystemen binnenkomt, zijn er producten nodig waarmee ze tegen lage kosten horizontaal kunnen worden geschaald. De verwerking van een groot aantal berichten per seconde mogelijk maken.

Dit is waar een nieuwe generatie makelaars, zoals RabbitMQ, relevanter wordt in moderne applicaties, die onze klanten een hoog niveau van beschikbaarheid, betrouwbaarheid, interoperabiliteit en prestaties willen bieden.

U kunt ook enkele betrouwbare RabbitMQ-hostingplatforms voor uw toepassing verkennen.

gerelateerde berichten