Torna al blog
RabbitMQMessagingArchitettura

Code di messaggi con RabbitMQ

MUSTNODE SRL7 min di lettura

Disaccoppiare con i messaggi

Quando due servizi comunicano in modo diretto e sincrono, il rallentamento di uno si propaga all'altro. Una coda di messaggi come RabbitMQ inserisce un buffer affidabile tra produttori e consumatori, permettendo di assorbire i picchi e disaccoppiare i componenti.

I concetti fondamentali

RabbitMQ si basa sul protocollo AMQP e su alcune entita chiave:

  • Producer: chi pubblica i messaggi.
  • Exchange: riceve i messaggi e li instrada secondo regole.
  • Queue: dove i messaggi attendono di essere consumati.
  • Consumer: chi preleva ed elabora i messaggi.
  • Binding: la regola che collega un exchange a una coda.

Il routing degli exchange

L'exchange decide a quali code consegnare. Un exchange di tipo direct instrada in base a una routing key esatta; topic usa pattern; fanout invia a tutte le code collegate.

channel.assertExchange("ordini", "direct");
channel.publish("ordini", "creato", Buffer.from(JSON.stringify(ordine)));

Affidabilita

Per non perdere messaggi si combinano code durevoli, messaggi persistenti e l'acknowledgement manuale: il consumer conferma l'elaborazione solo a lavoro completato, cosi un crash non distrugge il messaggio.

channel.consume("coda", (msg) => {
  elabora(msg);
  channel.ack(msg);
});

In MUSTNODE SRL usiamo RabbitMQ per costruire sistemi resilienti, dove i servizi restano indipendenti e i carichi di lavoro vengono gestiti in modo asincrono e affidabile.

Articoli correlati

Altri approfondimenti dalla categoria Architettura & Microservizi.