Introduzione al protocollo AMQP
AMQP (Advanced Message Queuing Protocol) è un protocollo standard a livello applicativo che fornisce servizi di messaggistica unificata ed è uno standard aperto per protocolli a livello applicativo progettato per middleware orientati ai messaggi. AMQP è un protocollo di rete per il passaggio di messaggi asincroni tra processi.
I client e il middleware dei messaggi basati su questo protocollo possono consegnare messaggi senza essere limitati da diversi prodotti client/middleware, linguaggi di sviluppo differenti, ecc.
Le principali caratteristiche di AMQP sono orientata ai messaggi, coda, routing (inclusi peer-to-peer e publish/subscribe), affidabilità e sicurezza. AMQP impone il comportamento dei provider di messaggi e dei client, consentendo una vera interoperabilità tra diversi fornitori.
Messaggi di instradamento
Nell'architettura AMQP, qualsiasi instradamento dei messaggi riuscito è composto da tre parti:
- Scambio: dove i produttori pubblicano messaggi
- Code: Dove i consumatori ricevono i messaggi
- Bindings: come i messaggi vengono instradati dallo switch a una specifica coda
Scambi e Vincoli
Quindi, come arriva il messaggio in coda? Ogni volta che vuoi consegnare un messaggio a un consumatore, devi prima inviarlo allo scambio. Poi, in base a determinate regole o chiavi di instradamento, RabbitMQ deciderà a quale coda consegnare i messaggi.
Le regole - o chiavi di routing - ti permettono di associare una coda allo exchange. RabbitMQ cercherà di abbinare la chiave di routing nel messaggio a quella utilizzata nel binding. Il messaggio viene poi consegnato alla coda in base a uno dei quattro tipi di scambio: fanout, topic, direct, header
Scambio di Fanout
Questo tipo di scambio trasmette tutti i messaggi ricevuti a tutte le code ad esso collegate. Qualsiasi chiave di routing fornita con il messaggio pubblicato sarà ignorata.
Scambio di Temi
In questo tipo di scambio, i messaggi vengono inviati a una coda basata sulla chiave di instradamento. Ciò significa che i messaggi inviati allo scambio di argomenti devono avere una chiave di routing specifica, che deve essere una lista di parole separate da punti (ad esempio, 'acs.deviceoperations.'). Il limite di formulazione è di 255 byte.
La chiave di binding deve avere lo stesso formato della chiave di instradamento. Pertanto, i messaggi inviati con una chiave di routing specifica verranno consegnati a ciascuna coda vincolata con una chiave di binding corrispondente.
Le chiavi di binding permettono le seguenti regole di espressione:
*(asterisco) può sostituire una sola parola # (hash) può sostituire zero o più parole Quando una coda è associata con una chiave di binding "#" (hash), riceverà tutti i messaggi indipendentemente dalla chiave di instradamento, proprio come in uno scambio Fanout fan-out.
Scambio diretto
Quando viene dichiarata una coda, questa saràAssegna automaticamente uno switch che usa il nome della coda come chiave di routing。 Se la chiave di instradamento corrisponde, il messaggio viene consegnato alla coda appropriata.
Scambio di header
Gli switch header sono in qualche modo simili agli switch topic, ma a differenza degli switch topic, il routing si basa su code key, e i valori di routing degli header switch si basano sui dati dell'intestazione del messaggio. La chiave di routing del topic switch è solo una stringa, mentre il header switch può essere un intero e un hash.
(Fine)
|