Nell’ultimo periodo ho avuto modo di guardare un po più da vicino AMQP e RabbitMQ, il binomio perfetto per quanto riguarda comunicazioni asincrone e architettura a microservizi.
📜 Il protocollo AMQP
Il protocollo AMQP (Advanced Message Queuing Protocol) è uno standard aperto definito per garantire funzionalità di messaggistica, routing, accodamento e affidabilità.
Uno dei principali usi di questo protocollo è la possibilità di implementare comunicazioni asincrone mediante code, particolarmente utilizzate nell’implementazione di architetture a microservizi.
Concetti fondamenti
I principali concetti del protocollo sono:
Messaggio
: il dato, l’informazione che produce unProducer
.Producer
: si occupa di genera il messaggio e di inviarlo ad unBroker
.Broker
: si occupa di ricevere il messaggio ed effettuare il dispatch (in base a delle regole definite dal tipo diExchange
) verso diverse code (Queue
).Queue
: la coda dove ilProducer
medianteExchange
produce ed ilConsumer
consuma.Consumer
: estrae il messaggio dallacoda
per cui si è sottoscritto e lo consuma/elabora.Exchange
: il componente che permette di definire le regole di binding e dispatch sulle code.
Tipologie di Exchange
Il protocollo prevede diverse tipologie di exchange:
DIRECT
: effettua il dispatch dei messaggi a delle code in base ad una routing key.FANOUT
: effettua il dispatch dei messaggi a tutte le code ignorando qualunque routing key.TOPIC
: effettua il dispatch dei messaggi in base a dei pattern match specificati.HEADERS
: effettua il dispatch dei messaggi usando l’header dei messaggi per il routing.
Versioni del protcollo
Sono attualmente disponibili due versioni del protcollo: la 1.0 e la 0-9-1.
✉️ RabbitMQ, il message broker
RabbitMQ è uno dei Message Broker opensource più importanti nel panorama odierno. Scritto in Erlang, implementa il protocollo AMQP v 0-9-1 e permette di essere esteso mediante dei plugin.
Esso dispone di un interfaccia di gestione e monitoring via web molto intuitiva:
Dispone anche di diversi strumenti utilizzabili da CLI come: rabbitmqctl, rabbitmqadmin e altri ancora.
Inoltre dispone di tutta una serie di funzionalità come: il clustering, Virtual hosting e auth.
🔗 Link utili
Qui di seguito potete trovare alcuni link utili che potete consultare:
🔚 Conclusioni
AMQP e RabbitMQ sono senza ombra di dubbio tecnologie interessanti e utilizzate tantissimo, partendo dalle piccole start-up fino ad arrivare ai grandi colossi enterprise.
Sono inoltre delle tecnologie fondamentali per quanto riguarda architetture a microservizi e siuramente merita di essere approfondito come si deve, cosa che mi auguro di riuscire a fare nei prossimi mesi.