RabbitMQ

rabbitmq.png

En message broker

RabbitMQ er en meget anvendt Message Broker, der letter kommunikationen mellem applikationer ved at håndtere transmissionen af meddelelser gennem køer. Det fungerer efter princippet om Message Queues, hvilket gør det muligt for applikationer at sende og modtage meddelelser asynkront, hvilket forbedrer effektiviteten og skalerbarheden i softwarearkitekturer.

Pasted image 20241120062650.png
Billedet fra CloudAMQP

Nøglebegreber

Message Broker

RabbitMQ fungerer som en mellemmand for meddelelser, ligesom et posthus, der modtager, opbevarer og videresender meddelelser.

Det gør det muligt for Producers (applikationer, der sender meddelelser) at kommunikere med Consumers (applikationer, der modtager meddelelser), uden at skulle kende hinandens implementering, hvilket fremmer lav kopling mellem komponenter.

Queues

Pasted image 20241120062845.png
Billedet fra Medium
En Queue i RabbitMQ er en ordnet samling af meddelelser, der følger en FIFO (First In, First Out) metode. Meddelelser opbevares i køen, indtil de behandles af forbrugere. Dette muliggør effektiv belastningsbalancering og opgavefordeling blandt flere forbrugere.

Bindings

Pasted image 20241120080418.png
Billedet fra CloudAMQP

I RabbitMQ refererer bindings til forbindelserne mellem Exchanges og queues. Bindingen bestemmer, hvordan meddelelser, der sendes til en udveksling, dirigere til en eller flere queuesbaseret på bestemte kriterier.

For at oprette en binding skal en queue være tilknyttet en udveksling med en specifik routing key (eller et mønster, afhængigt af udvekslingens type). Bindingen gør det muligt for udvekslingen at sende meddelelser til queue, når meddelelser, der matcher bindingens kriterier, bliver sendt til exchange.

Vigtigt!

Bindings er en essentiel del af RabbitMQ's fleksible routing-mekanisme, da de giver mulighed for komplekse meddelelsesstrukturer og datadistribution.

Exchanges

Pasted image 20241120063059.png

Opsummering

Exchanges modtager meddelelser fra Producers og ruter dem til en eller flere queues baseret på definerede regler. Rute mekanismen bestemmes af routing key og binding konfigurationer.

Exchange Typer

Direct Exchange

Meddelelser sendes til queues, hvis bindinger matcher den eksakte routing key.
Pasted image 20241120080729.png
Billedet er fra Medium

Fanout Exchange

Ignorerer routing key og sender meddelelser til alle bundet queues.
Pasted image 20241120080829.png
Billedet er fra RabbitMQ

Topic Exchange

Bruger routing keys med mønstermatching (wildcards) til at sende meddelelser til queues, der matcher et specifikt mønster. For eksempel kan en routing key som logs.error dirigere meddelelser til en queue, der er bundet med et mønster, der matcher logs.*.
Pasted image 20241120080959.png
Billedet er fra lostechies

Headers Exchange

routing keys ignoreres, og meddelelser dirigeres baseret på header-egenskaber, som kan indeholde flere nøgle-værdi-par.
Pasted image 20241120081038.png
Billedet er fra javainuse

AMQP Protokol

RabbitMQ bruger Advanced Message Queuing Protocol (AMQP), som er en åben standard for meddelelsesorienteret middleware. Denne protokol sikrer pålidelig levering af meddelelser mellem producenter og forbrugere.

Routing Keys

Routing keys i RabbitMQ er en central del af Message Routing og bruges til at bestemme, hvordan meddelelser dirigeres fra en exchange til en eller flere queues.

Routing keys er strenge, der følger bestemte mønstre og fungerer i forbindelse med bindinger.

Nøglepunkter om Routing Keys i RabbitMQ:

Pasted image 20241120063240.png
Billedet fra CloudAMQP

Routing keys gør RabbitMQ i stand til at håndtere komplekse meddelelsesruter og tilpasse sig forskellige behov i systemdesign og datadistribution.

Funktioner

Anvendelsesområder

RabbitMQ er særligt nyttigt i scenarier som:

Sammenfattende fungerer RabbitMQ som en robust løsning, der forbedrer applikationsydelse og pålidelighed ved at muliggøre asynkron kommunikation mellem forskellige systemer.

Kilder

RabbitMQ dokumentation