RabbitMQ è un middleware distribuito per messaggi sviluppato nel linguaggio Erlang e distribuito come open source. Supporta il protocollo di messaggistica avanzato (AMQP) e librerie client in vari linguaggi di programmazione come Java, Golang, PHP e Python.
Caratteristiche
- Affidabilità: Garantisce affidabilità attraverso persistenza dei messaggi, supporto alle transazioni, riconoscimento di consumatori e trasmissioni, ecc.
- Meccanismo di routing: Supporta modelli di sottoscrizione e consumo principali come broadcast, sottoscrizione, corrispondenza dell'intestazione, ecc.
- Scalabilità: Più nodi RabbitMQ possono formare un cluster e possono espandersi dinamicamente secondo le effettive esigenze aziendali.
- Alta disponibilità: Le code possono essere impostate come repliche su macchine nel cluster, rendendo le code ancora disponibili in caso di problemi con alcuni nodi.
- Protocolli multipli: Oltre al supporto nativo AMQP, RabbitMQ supporta anche diversi protocolli di middleware di messaggistica come STOMP, MQTT, ecc.
- Client multi-linguaggio: RabbitMQ supporta quasi tutti i linguaggi comuni, come Java, Python, Ruby, PHP, C#, JavaScript, ecc.
- Interfaccia di gestione: RabbitMQ fornisce un'interfaccia utente per il monitoraggio e la gestione dei messaggi e dei nodi del cluster.
- Meccanismo dei plugin: RabbitMQ fornisce numerosi plugin per estensioni estese, e gli utenti possono anche scrivere i propri plugin.
Principali casi d'uso
Elaborazione asincrona
Parti non fondamentali o meno importanti del processo aziendale possono essere notificate in modo asincrono al sistema di destinazione mediante notifiche di messaggi, consentendo al processo aziendale principale di rispondere prontamente senza attendere in modo sincrono i risultati del processo di altri sistemi.
Decoupling delle applicazioni
L'espansione aziendale può essere realizzata basandosi sui meccanismi di sottoscrizione dei messaggi. Ad esempio, in uno scenario di ordinazione di e-commerce, quando un utente effettua un ordine, viene generato un messaggio di ordine. Il modulo del magazzino può sottoscriversi al messaggio dell'ordine per la spedizione, il modulo dei punti può sottoscriversi al messaggio dell'ordine per l'aggiunta di punti, e il modulo SMS può sottoscriversi al messaggio dell'ordine per l'invio di messaggi di testo, e così via.
Peak Shaving
Poiché possono esserci differenze nelle capacità di elaborazione dei sistemi a monte e a valle, le code di messaggi possono agire come regolatori per consentire ai sistemi a valle di gestire il traffico in modo costante.
Ad esempio, nel caso di un ordine pagato con successo e della notifica al magazzino per la spedizione, se il modulo di ordine attuale supporta una grande concorrenza di 1000 e la spedizione nel magazzino supporta solo 100, l'introduzione di una coda di messaggi può consentire al modulo del magazzino di sottoscriversi al messaggio dell'ordine e gestire la spedizione lentamente in coda.
ps: È come fare la fila per la metropolitana.