Vai al contenuto principale

RabbitMQ su Hikube

I cluster RabbitMQ di Hikube offrono un'infrastruttura di messaggistica gestita e affidabile, progettata per la comunicazione asincrona tra servizi e applicazioni. Basato sul protocollo AMQP (Advanced Message Queuing Protocol), RabbitMQ garantisce un instradamento sicuro e ordinato dei messaggi, adatto sia alle architetture a microservizi sia ai sistemi di integrazione aziendale complessi.

I cluster si creano e si gestiscono in self-service dalla console Hikube, nel menu DB & Messaging → RabbitMQ del suo progetto.


Cosa permette di fare la console​

  • Creare un cluster con una procedura guidata: versione di RabbitMQ, preset di risorse, dimensione del disco, numero di repliche e accesso esterno;
  • Definire i virtual host (vhost) e gli utenti fin dalla creazione, per poi gestirli dalla pagina del cluster;
  • Assegnare diritti per vhost a ciascun utente (Administrator o Read-only);
  • Generare una nuova password per un utente;
  • Modificare un cluster esistente: aggiornamento di versione, aumento della dimensione del disco, accesso esterno;
  • Eliminare un cluster, un vhost o un utente.

Architettura e funzionamento​

Un deployment RabbitMQ si basa su alcuni concetti fondamentali:

  • Producers: inviano i messaggi a RabbitMQ tramite gli exchanges, che determinano come i messaggi vengono instradati verso le queues.
  • Exchanges: applicano una logica di instradamento (direct, fanout, topic o headers) per distribuire i messaggi in base alle chiavi di routing.
  • Queues: conservano i messaggi finché non vengono consumati dai consumers.
  • Consumers: recuperano ed elaborano i messaggi, garantendo un flusso di lavoro asincrono, affidabile e disaccoppiato.

Un cluster può funzionare in modalità standalone (1 replica) o in modalità cluster (3 o 5 repliche). In modalità cluster, le quorum queues (basate sul protocollo Raft) replicano i messaggi tra i nodi per assicurare la continuità del servizio in caso di guasto. Il dettaglio è presentato nei concetti.


Casi d'uso tipici​

Comunicazione tra servizi​

RabbitMQ è spesso utilizzato come bus di messaggi interno tra applicazioni o microservizi. Permette di disaccoppiare le elaborazioni, ridurre la latenza percepita e migliorare la resilienza complessiva.

Esempi:

  • Coda di elaborazione per attività lunghe (e-mail, report, notifiche)
  • Sistema di eventi di business (ordini, pagamenti, inventari)
  • Comunicazione affidabile tra microservizi distribuiti

Gestione di flussi asincroni​

RabbitMQ semplifica la realizzazione di workflow asincroni in cui ogni componente lavora indipendentemente dagli altri.

Esempi:

  • Orchestrazione di job in background
  • Elaborazione parallela di lotti di dati
  • Coordinamento di pipeline CI/CD o di automazioni interne

Integrazione di applicazioni e interconnessione di sistemi​

RabbitMQ funge da ponte di comunicazione tra applicazioni, linguaggi o ambienti eterogenei.

Esempi:

  • Integrazione tra applicazioni legacy e microservizi moderni
  • Connessione tra sistemi interni e piattaforme esterne tramite AMQP
  • Centralizzazione dei messaggi di eventi di business in un unico bus

Affidabilità e persistenza​

RabbitMQ assicura la durabilità dei messaggi grazie alla persistenza su disco e alla gestione degli acknowledgements (ACK/NACK). Combinati con le quorum queues su un cluster di 3 o più repliche, questi meccanismi evitano la perdita di messaggi in caso di guasto di un nodo.

Esempi:

  • Coda transazionale per elaborazioni critiche
  • Elaborazione garantita di messaggi finanziari o logistici
  • Trasferimento di dati tra servizi con ripresa automatica dopo un errore