Introduzione ai Concetti Base di RabbitMQ

Diagramma dei Concetti di RabbitMQ

Diagramma dei Concetti di RabbitMQ

Spiegazione dei Concetti

Messaggio

Un messaggio è composto da un'intestazione del messaggio (ovvero informazioni di configurazione aggiuntive) e un corpo del messaggio (ovvero il contenuto del messaggio).

Publisher

Il produttore del messaggio, che è un'applicazione client che pubblica messaggi su uno scambio.

Scambio

Uno scambio viene utilizzato per ricevere messaggi inviati dai produttori e instradare questi messaggi verso code nel server.

Ci sono quattro tipi di scambi:

  • Tipo diretto: Confronta la chiave di instradamento nel messaggio con le chiavi di instradamento associate a tutti i binding dello scambio. Se corrispondono, il messaggio viene inviato alla coda corrispondente di quel binding.

  • Tipo topic: Confronta la chiave di instradamento nel messaggio con le chiavi di instradamento associate a tutti i binding dello scambio. Se c'è una corrispondenza, il messaggio viene inviato alla coda corrispondente di quel binding.

  • Tipo fanout: Inoltra direttamente i messaggi alle code corrispondenti di tutti i binding, ignorando la chiave di instradamento durante l'indirizzamento.

  • Tipo headers: Confronta gli header nel messaggio con i parametri associati a tutti i binding dello scambio. Se c'è una corrispondenza, il messaggio viene inviato alla coda corrispondente di quel binding (meno comunemente usato, simile al tipo diretto).

Nota: Spiegazioni dettagliate dei tipi di scambio saranno fornite nelle sezioni seguenti sui modalità di lavoro. Questo è solo un'introduzione.

Binding

La relazione utilizzata per stabilire una connessione tra le code dei messaggi e gli scambi.

Coda

Una coda di messaggi utilizzata per memorizzare i messaggi fino a quando non vengono consegnati ai consumatori. Serve sia come contenitore per i messaggi che come punto finale per i messaggi. Un messaggio può essere consegnato a una o più code. I messaggi rimangono nella coda, in attesa che i consumatori si connettano e li recuperino.

Connessione

Una connessione di rete, come una connessione TCP.

Canale

Un canale è una connessione virtuale stabilita all'interno di una connessione TCP reale. Tutti i comandi AMQP vengono inviati attraverso i canali, che si tratti di pubblicare messaggi, sottoscriversi alle code o ricevere messaggi. Questo design introduce il concetto di canali per riutilizzare una singola connessione TCP, poiché stabilire e terminare le connessioni TCP è costoso per il sistema operativo.

Consumatore

Il consumatore di messaggi, rappresentante un'applicazione client che recupera messaggi dalle code dei messaggi.

Host Virtuale

Un host virtuale rappresenta un insieme di scambi, code di messaggi e oggetti correlati. È un dominio del server indipendente che condivide lo stesso ambiente di autenticazione e crittografia. Ogni vhost è essenzialmente una mini-versione di un server RabbitMQ, con le proprie code, scambi, binding e meccanismi di autorizzazione.

I vhost sono un concetto fondamentale in AMQP e devono essere specificati durante l'apertura di una connessione. Il vhost predefinito per RabbitMQ è /.

Nota: L'host virtuale è una forma di strategia di isolamento delle risorse che consente la suddivisione di aree isolate multiple all'interno dello stesso server RabbitMQ.

Broker

Rappresenta l'entità fisica del server della coda dei messaggi.