Introduzione ai Concetti Base 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.