Saremmo interessati a sentire qualsiasi esperienza con i pro e contro di ActiveMQ vs RabbitMQ vs ZeroMQ. Sono benvenute anche informazioni su altre code di messaggi interessanti.
Saremmo interessati a sentire qualsiasi esperienza con i pro e contro di ActiveMQ vs RabbitMQ vs ZeroMQ. Sono benvenute anche informazioni su altre code di messaggi interessanti.
Risposte:
Modifica: la mia risposta iniziale era fortemente focalizzata su AMQP. Ho deciso di riscriverlo per offrire una visione più ampia sull'argomento.
Queste 3 tecnologie di messaggistica hanno approcci diversi sulla costruzione di sistemi distribuiti:
RabbitMQ è una delle principali implementazioni del protocollo AMQP (insieme a Apache Qpid). Pertanto, implementa un'architettura broker, il che significa che i messaggi vengono messi in coda su un nodo centrale prima di essere inviati ai client. Questo approccio rende RabbitMQ molto facile da usare e distribuire, poiché scenari avanzati come routing, bilanciamento del carico o accodamento permanente dei messaggi sono supportati in poche righe di codice. Tuttavia, lo rende anche meno scalabile e "più lento" perché il nodo centrale aggiunge latenza e le buste dei messaggi sono piuttosto grandi.
ZeroMq è un sistema di messaggistica molto leggero appositamente progettato per scenari ad alta produttività / bassa latenza come quello che puoi trovare nel mondo finanziario. Zmq supporta molti scenari di messaggistica avanzati ma, contrariamente a RabbitMQ, dovrai implementare la maggior parte di essi da soli combinando vari elementi del framework (ad esempio: socket e dispositivi). Zmq è molto flessibile ma dovrai studiare circa 80 pagine della guida (che consiglio di leggere a chiunque stia scrivendo un sistema distribuito, anche se non usi Zmq) prima di poter fare qualcosa di più complicato dell'invio di messaggi tra 2 pari.
ActiveMQ è nel mezzo. Come Zmq, può essere distribuito con topologie sia broker sia P2P. Come RabbitMQ, è più semplice implementare scenari avanzati ma di solito a scapito delle prestazioni non elaborate. È il coltellino svizzero di messaggistica :-).
Infine, tutti e 3 i prodotti:
Perché ti sei perso Sparrow , Starling , Kestrel , Amazon SQS , Beanstalkd , Kafka , IronMQ ?
Server di coda messaggi
I server delle code dei messaggi sono disponibili in varie lingue, Erlang (RabbitMQ), C (beanstalkd), Ruby (Starling o Sparrow), Scala (Kestrel, Kafka) o Java (ActiveMQ). Una breve panoramica è disponibile qui
Passero
Storno
Gheppio
RabbitMQ
Apache ActiveMQ
Beanstalkd
Amazon SQS
Kafka
ZMQ
EagleMQ
IronMQ
Spero che questo possa esserci utile. fonte
Più informazioni di quante vorresti sapere:
http://wiki.secondlife.com/wiki/Message_Queue_Evaluation_Notes
Sto solo elaborando ciò che Paul ha aggiunto nel commento. La pagina sopra menzionata è morta dopo il 2010, quindi leggi con un pizzico di sale. Molta roba è stata cambiata in 3 anni.
Dipende molto dal tuo caso d'uso.
Il confronto di 0MQ con ActiveMQ o RabbitMQ non è corretto. ActiveMQ e RabbitMQ sono sistemi di messaggistica che richiedono installazione e amministrazione. Offrono molto più di ZeroMQ. Hanno code permanenti, supporto per le transazioni, ecc.
ZeroMQ è un'implementazione socket orientata ai messaggi leggera. È inoltre adatto per la programmazione asincrona in-process. È possibile eseguire un "Sistema di messaggistica aziendale" su ZeroMQ, ma è necessario implementare molto da soli.
Così:
ActiveMQ, RabbitMQ, Websphere MQ e MSMQ sono "Code di messaggi aziendali"
ZeroMQ è una libreria IPC orientata ai messaggi.
C'è un confronto tra RabbitMQ e ActiveMQ qui . Immediatamente, ActiveMQ è configurato per garantire la consegna dei messaggi, il che può dare un'impressione lenta rispetto ai sistemi di messaggistica meno affidabili. Se lo desideri, puoi sempre modificare la configurazione per le prestazioni e ottenere prestazioni almeno pari a quelle di qualsiasi altro sistema di messaggistica. Almeno hai questa opzione. Ci sono molte informazioni nei forum e nelle FAQ di ActiveMQ per la configurazione per il ridimensionamento, le prestazioni e l'alta disponibilità. Inoltre, ActiveMQ supporterà AMQP 1.0 quando le specifiche saranno finalizzate, insieme ad altri formati di filo, come STOMP.
Un altro vantaggio di ActiveMQ è il suo progetto Apache, quindi esiste una diversità nella comunità degli sviluppatori e non è legata a un'azienda.
Non ho usato ActiveMQ o RabbitMQ ma ho usato ZeroMQ. La grande differenza per come la vedo tra ZeroMQ e ActiveMQ ecc. È che 0MQ è senza intermediari e non ha affidabilità integrata per la consegna dei messaggi. Se stai cercando un'API di messaggistica facile da usare che supporti molti modelli di messaggistica, trasporti, piattaforme e collegamenti linguistici, vale la pena dare un'occhiata a 0MQ. Se stai cercando una piattaforma di messaggistica completa, 0MQ potrebbe non andare bene.
Vedi www.zeromq.org/docs:cookbook per molti esempi di come usare 0MQ.
Uso correttamente 0MQ per il passaggio di messaggi in un'applicazione di monitoraggio dell'utilizzo dell'elettricità (vedere http://rwscott.co.uk/2010/06/14/currentcost-envi-cc128-part-1/ )
Sto usando zeroMQ. Volevo un semplice sistema di trasmissione dei messaggi e non ho bisogno della complicazione di un broker. Inoltre, non voglio un enorme sistema aziendale orientato a Java.
Se vuoi un sistema veloce e semplice e devi supportare più lingue (io uso C e .net) allora ti consiglio di guardare 0MQ.
Posso solo aggiungere i miei 2 centesimi su ActiveMQ ma poiché questo è uno dei più popolari:
La lingua in cui vuoi scrivere potrebbe essere importante. Sebbene ActiveMQ abbia un client per la maggior parte, la loro implementazione in C # è lungi dall'essere completa rispetto alla Java Library.
Ciò significa che alcune funzionalità di base sono traballanti (protocollo di fail-over che ... beh ... fallisce in alcuni casi, nessun supporto di riconsegna) e altri semplicemente non c'è. Poiché .NET non sembra essere così importante per il progetto, lo sviluppo è piuttosto lento e non sembra esserci alcun piano di rilascio. Il bagagliaio è spesso rotto, quindi se lo consideri, potresti voler considerare di contribuire al progetto se vuoi che le cose vadano avanti.
Poi c'è lo stesso ActiveMQ che ha molte caratteristiche interessanti ma anche alcuni problemi molto strani. Usiamo la versione Fuse (Progress) di activemq per motivi di stabilità, ma anche allora ci sono un paio di strani "bug" che dovresti tenere a mente:
Tutto sommato, è un prodotto abbastanza carino SE puoi vivere con i suoi problemi:
A) non aver paura di essere coinvolto attivamente quando usi .NET
B) sviluppare in java ;-)
C'è un confronto tra le funzionalità e le prestazioni di RabbitMQ ActiveMQ e QPID fornite su
http://bhavin.directi.com/rabbitmq-vs-apache-activemq-vs-apache-qpid/
Personalmente ho provato tutti e tre. Secondo me RabbitMQ è la migliore prestazione, ma non ha opzioni di failover e recupero. ActiveMQ ha il maggior numero di funzionalità, ma è più lento.
Aggiornamento: HornetQ è anche un'opzione che puoi esaminare, è JMS Complaint, un'opzione migliore di ActiveMQ se stai cercando una soluzione basata su JMS.
Ho scritto della mia esperienza iniziale riguardo AMQP, Qpid e ZeroMQ qui: http://ron.shoutboot.com/2010/09/25/is-ampq-for-you/
La mia opinione soggettiva è che AMQP va bene se hai davvero bisogno delle strutture di messaggistica persistenti e non è troppo preoccupato che il broker possa essere un collo di bottiglia. Inoltre, al momento manca il client C ++ per AMQP (Qpid non ha ottenuto il mio supporto; non sono sicuro del client ActiveMQ), ma forse è in fase di elaborazione. ZeroMQ potrebbe essere diversamente.
C'è qualche discussione nei commenti di questo post sul blog , su Twitter che scrive la propria coda di messaggi, che può essere interessante.
Steve ha svolto numerosi test di carico e stress su ActiveMQ, RabbitMQ, ecc. ActiveMQ è in realtà piuttosto lento (molto più lento di Kestrel), RabbitMQ si blocca costantemente con troppi produttori e troppo pochi consumatori.
Probabilmente non avrai inizialmente un caricamento simile a Twitter :)
Poche applicazioni hanno tante configurazioni di ottimizzazione come ActiveMQ. Alcune caratteristiche che fanno risaltare ActiveMQ sono:
Dimensione prefetch configurabile. Threading configurabile. Failover configurabile. Notifica amministrativa configurabile per i produttori. ... dettagli a:
Bene, tutto dipende dal tuo caso d'uso. Piuttosto che fare affidamento sul conto di qualcun altro del proprio caso d'uso, sentiti libero di pubblicare il tuo caso d'uso nell'elenco conigliomq-discuss. Chiedere su Twitter ti darà anche alcune risposte. I migliori auguri, alexis
A proposito di ZeroMQ aka 0MQ, come forse già saprai, è quello che ti farà ottenere il maggior numero di messaggi al secondo (erano circa 4 milioni al secondo sul loro server di riferimento l'ultima volta che ho controllato), ma come potresti già sapere, il la documentazione è inesistente. Avrai difficoltà a trovare il modo di avviare i server, figuriamoci come usarli. Immagino che sia in parte il motivo per cui nessuno ha ancora contribuito a 0MQ.
Divertiti!
Se sei interessato anche alle implementazioni commerciali, dai un'occhiata a Nirvana dai miei canali .
Il Nirvana è ampiamente utilizzato nel settore dei servizi finanziari per piattaforme di trading e distribuzione dei prezzi su larga latenza su larga scala.
È disponibile il supporto per una vasta gamma di linguaggi di programmazione client in tutti i domini aziendale, Web e mobile.
Le funzionalità di clustering sono estremamente avanzate e vale la pena dare un'occhiata se l'HA trasparente o il bilanciamento del carico sono importanti per te.
Nirvana può essere scaricato gratuitamente per scopi di sviluppo.