Bene, non ho usato gli altri due, ma posso condividere le mie esperienze con ZeroMQ. Secondo me, eccelle in tutti i tuoi.
velocità e il throughput
E 'veloce come TCP, non usa CPU o un sacco un ricordo. Può spingere MOLTO di messaggi molto rapidamente senza sudare. Saturerà il tuo modo di canale di rete prima di esaurire la memoria (dubito che sarai mai in grado di massimizzare la CPU). C'è stato un confronto con RabbitMQ da qualche parte e ZMQ lo supera di un fattore 2. Dalle cose che ho letto sul web è in uso nel trading ad alta velocità.
RabbitMQ è anche un ottimo strumento. Dai un'occhiata a questo - potrebbe essere buona misura per quello che stai cercando
SPOF
Se progettare voi l'applicazione correttamente, allora si può avere alcun singolo punto di errore. È molto facile collegare due socket a un altro. Quindi se uno di loro fallisce, l'altro è lì per gestire il lavoro. Ci sono cose come i marchi di acqua alta per aiutarti lungo la strada. Leggi lo ZeroMQ Guide per imparare come progettare la tua app senza SPOF.
Trasporti e instradamento
Per quanto riguarda le opzioni di trasporto (se sto capire questo correttamente) - tocca a voi per definire il protocollo. In pratica, ZeroMQ ti promette che fornirà questo blob di dati all'altra estremità. Usa JSON, buffer di protocollo, codice Morse, come preferisci.
Non esiste un instradamento predefinito come in AMQP. Di nuovo, spetta a te specificare quale zoccolo ZeroMQ si connette a quale, ma questo è molto facile.
Stabilità
ho sviluppato con lui per un paio di mesi (utilizzando Python) e non ho trovato un singolo problema con la sua stabilità. Anche quando provo a usarlo nel modo sbagliato, mi viene solo un bel errore che mi dice di non farlo. Anche riavviare/uccidere alcuni servizi e riportarli su di essi non causa alcun problema. Direi che è un software molto stabile.
Come nota: utilizzare sempre l'ultima versione - la versione 2.1 è molto orientata alla stabilità, pertanto in esso sono stati risolti numerosi problemi di stabilità.
Comunità
binding per più di 20 lingue, mailing list attivo, molto buona documentazione, rilascia frequenti. Qualunque altra cosa?
Integrazione
Perché è progettato come una biblioteca tocca a voi per progettare voi l'applicazione (a differenza del caso con un quadro) e 'praticamente stand dal vostro senso. È un po 'come un normale socket TCP, molto più potente e facile da usare (ti garantisce che un messaggio verrà consegnato nel suo complesso, non solo i primi 128 byte e il resto in seguito, come nel caso dei socket regolari).
trucchi
ci sono alcuni, ma sono tutti documentati nella guida. (Ad esempio: potresti perdere i primi messaggi da uno zoccolo PUB quando ti colleghi (SUB) ad esso. C'è una spiegazione a questo nella guida e una ricetta su come gestirlo).
complesso
Ho trovato questo uno dei pezzi migliori disegnati di software - stabili, ben scritto, ben documentato e non stare a modo mio.
Si consiglia di leggere the guide end-to-end. E 'ben scritto, esempi in molti linguaggi (incluso C++) e descrive molti casi limite e punti deboli.
Con opzioni di trasporto intendo opzioni di protocollo di livello inferiore, come TCP, UDP, ecc. E grazie per la tua risposta approfondita :) – Ebrahim