Wir wären daran interessiert zu hören, alle Erfahrungen, die mit der vor-und Nachteile von ActiveMQ vs RabbitMQ vs ZeroMQ. Informationen über andere interessante message queues ist auch willkommen.
Edit: Meine erste Antwort hatte einen starken Fokus auf AMQP. Habe ich beschlossen Sie neu zu schreiben, bieten eine breitere Sicht auf das Thema.
Diese 3-messaging-Technologien haben unterschiedliche Ansätze für den Aufbau verteilter Systeme :
RabbitMQ ist einer der führenden Implementierung des AMQP-Protokoll (zusammen mit Apache Qpid). Daher implementiert es eine broker-Architektur, was bedeutet, dass Nachrichten in der Warteschlange werden an einen zentralen Knoten, bevor Sie an die Kunden gesendet werden. Dieser Ansatz macht RabbitMQ sehr einfach zu bedienen und bereitstellen, da die erweiterte Szenarien wie routing, load-balancing oder persistent message queuing werden unterstützt, in nur ein paar Zeilen code. Aber es macht es auch weniger skalierbar und die "langsameren", weil der zentrale Knoten die Latenz erhöht und die Nachricht Umschläge sind sehr groß.
ZeroMq ist ein sehr leichtes messaging-system, das speziell für hohen Durchsatz, Latenz und Szenarien wie die, die Sie finden in der Finanzwelt. Zmq unterstützt viele erweiterte messaging-Szenarien, aber im Gegensatz zu RabbitMQ, müssen Sie implementieren die meisten von Ihnen sich durch die Kombination der verschiedenen Teile des Rahmens (e.g : Steckdosen und Geräte). Zmq ist sehr flexibel, aber Sie haben zu studieren, die 80 Seiten oder so von dem guide (ich empfehle die Lektüre für jedermann zu schreiben verteiltes system, auch wenn Sie nicht Zmq), bevor Sie in der Lage zu tun, etwas komplizierter als das versenden von Nachrichten zwischen 2 peers.
ActiveMQ ist in der Mitte. Wie Zmq, es kann eingesetzt werden mit sowohl die broker-und P2P-Topologien. Wie RabbitMQ, es ist einfacher zu implementieren erweiterte Szenarien aber in der Regel auf Kosten der raw-Leistung. Es ist das Schweizer Taschenmesser der messaging :-).
Schließlich alle 3 Produkte:
haben-client-apis für die gängigen Programmiersprachen (C++, Java, .Net, Python, Php, Ruby, ...)
Message-queue-Server sind verfügbar in verschiedenen Sprachen, Erlang (RabbitMQ), C (beanstalkd), Ruby (Star oder Spatz), Scala (Kestrel, Franz Kafka) oder Java (ActiveMQ). Eine kurze übersicht finden Sie hier
Sparrow
geschrieben von Alex MacCaw
Sparrow ist ein leichtes queue geschrieben in Rubin, der "spricht memcache"
Starling
geschrieben von Blaine Cook bei Twitter
Starling ist eine Message Queue Server auf der Basis von MemCached
geschrieben in Ruby
speichert Druckaufträge im Speicher (message queue)
Verwendet, die von LinkedIn zum auslagern der Verarbeitung von allen Seite und andere Ansichten
Standardmäßig über Persistenz, verwendet OS disk-cache für heiße Daten (hat einen höheren Durchsatz, dann ist jede von den oben unter Persistenz aktiviert)
Unterstützt sowohl on-line wie off-line-Verarbeitung
ZMQ
Die socket-Bibliothek, die fungiert als ein concurrency-framework
Schneller als TCP, für gruppierte Produkte und supercomputing
Trägt Nachrichten über inproc, IPC, TCP und multicast -
Verbindung N-zu-N-via-fanout -, pubsub -, pipeline -, Anfrage-Antwort -
Asynch-I/O für skalierbare multicore-message-passing-apps
EagleMQ
EagleMQ ist ein open-source, high-performance und leichtes queue manager.
In C geschrieben
Speichert alle Daten im Speicher und Unterstützung von Persistenz.
Es hat sein eigenes Protokoll. Unterstützt das arbeiten mit Warteschlangen, Wege und Kanäle.
Nur herausarbeiten, was Paulus Hinzugefügt im Kommentar. Die Seite, die oben erwähnt ist tot nach 2010, also Lesen, mit einer Prise Salz. Viele Sachen wurden geändert in 3 Jahren.
Vergleich 0MQ mit ActiveMQ oder RabbitMQ ist nicht fair.
ActiveMQ und RabbitMQ sind Messaging-Systeme, welche die installation und Verwaltung.
Sie bieten featurewise viel mehr als ZeroMQ. Sie haben echte persistente Warteschlangen, Unterstützung für Transaktionen etc.
ZeroMQ ist eine leichte message-orientierte socket-Implementierung. Es ist auch geeignet für in-Prozess-asynchrone Programmierung. Es ist möglich, eine "Enterprise-Messaging-System" über ZeroMQ, aber Sie hätte zu implementieren, die eine Menge auf Ihre eigenen.
Es ist ein Vergleich zwischen dem RabbitMQ und ActiveMQ hier. Out of the box, ActiveMQ konfiguriert ist, um zu garantieren, message delivery - was kann der Eindruck seiner langsamen, im Vergleich zu weniger zuverlässigen messaging-Systeme. Sie können immer ändern der Konfiguration für die Leistung, wenn Sie es wünschen und sich mindestens so gute Leistung wie jede andere messaging-system. Zumindest haben Sie diese option. Es gibt eine Menge von Informationen über die Foren und die ActiveMQ-FAQ-Konfiguration für Skalierung, Leistung und hohe Verfügbarkeit. Auch, ActiveMQ unterstützt AMQP 1.0, wenn die Spezifikation abgeschlossen ist, zusammen mit anderen Draht-Formate, wie STOMP.
Weiteres plus für ActiveMQ ist eine Apache-Projekt, also es ist die Vielfalt in der Entwickler-community - und nicht gebunden an eine Firma.
Habe ich nicht verwendet ActiveMQ oder RabbitMQ haben aber ZeroMQ. Den großen Unterschied sehe ich zwischen ZeroMQ und ActiveMQ etc. ist, dass 0MQ ist brokerless und nicht gebaut haben, in der Zuverlässigkeit für die Nachrichtenübermittlung. Wenn Sie sich für eine einfach zu bedienende messaging-API unterstützt viele messaging-Muster, - Transporte, - Plattformen und-Sprachanbindung dann 0MQ ist definitiv einen Blick Wert. Wenn Sie suchen für eine vollständige geblasen-messaging-Plattform, dann 0MQ kann nicht passen die Rechnung.
Ich bin mit zeroMQ. Ich wollte eine einfache message-passing-system und ich brauche nicht die Komplikation einer broker. Ich will auch nicht eine riesige Java-orientierten enterprise-system.
Wenn Sie wollen eine schnelle, einfache system, und Sie brauchen, um Unterstützung für mehrere Sprachen (ich benutze C und .net) dann würd ich empfehlen, sich auf 0MQ.
Kann ich nur hinzufügen, meine 2 cents über ActiveMQ, aber da dies ist einer der beliebtesten:
Die Sprache, die Sie schreiben möchten wichtig sein könnte. Obwohl ActiveMQ hat einen client für die meisten, Ihre C# - Implementierung ist bei weitem nicht vollständig, im Vergleich zu der Java-Bibliothek.
Bedeutet dies, dass einige grundlegende Funktionen unzuverlässig ist (fail-over Protokoll, dass ... na ja ... fehl in einigen Fällen, keine Rückgabe-Unterstützung) und andere einfach nicht da ist. Da .NET scheint nicht alles zu sein, die wichtig für das Projekt, die Entwicklung ist eher slowish, und es scheint nicht zu jedem release-plan. Kofferraum ist oft gebrochen, so dass, wenn Sie tun, betrachten Sie dieses, möchten Sie vielleicht zu prüfen, einen Beitrag zu dem Projekt, wenn Sie wollen, dass die Dinge voran gehen.
Dann gibt es ActiveMQ selbst die hat eine Menge nette features, aber einige sehr seltsame Fragen aswell. Wir verwenden die Sicherung (Progress) version von activemq für Stabilität Gründen, aber selbst dann gibt es ein paar seltsame "bugs", die Sie wollen im Auge zu behalten:
Broker, stoppen Sie das senden von Nachrichten, in einigen Fällen
Journal Fehlern, wodurch die Warteschlange Nachrichten anzeigen, die nicht mehr da sind (Sie werden nicht geliefert, der Verbraucher aber immer noch)
Priorität ist noch nicht implementiert (ist auf der Themen-Liste, seit dem Beginn der menschlichen Art)
etc. etc.
Alle und alle, es ist ein nettes Produkt, WENN Sie Leben können mit Ihren Fragen:
A) nicht Angst, sich aktiv zu engagieren, wenn mit .NETTO
ZeroMQ ist wirklich mit null Warteschlangen! Es ist ein wirklich Fehler! Es nicht hav-Warteschlangen, Themen, Persistenz, nichts! Es ist nur eine middleware für sockets API. Wenn es das ist, was Sie suchen, cool! ansonsten vergiss es! es ist nicht wie activeMQ oder rabbitmq.
Persönlich habe ich versucht, alle der drei oben genannten. RabbitMQ ist die beste performance weisen nach mir, aber es hat nicht die failover-und recovery-Optionen. ActiveMQ hat die meisten Funktionen, ist aber langsamer.
Update : HornetQ ist auch eine option, die Sie einsehen können, ist es JMS Beschwerde, eine bessere option als ActiveMQ wenn Sie sich für eine JMS-basierte Lösung.
Meine subjektive Meinung ist, dass AMQP ist in Ordnung, wenn Sie wirklich brauchen, das persistent messaging-Einrichtungen und ist nicht allzu besorgt zu sein, dass der Makler möglicherweise einen Engpass dar. Auch C++ - client ist zur Zeit fehlt für AMQP (Qpid nicht gewinnen, meine Unterstützung; nicht sicher über die ActiveMQ-client gibt es jedoch nicht), aber vielleicht ist work in progress. ZeroMQ kann der Weg anders.
Habe ich verwendet ActiveMQ in einer Produktionsumgebung für über 3 Jahre jetzt. Während es bekommt den job getan, Schlange Versionen der client-Bibliotheken, dass die Arbeit richtig und bug frei kann ein Problem sein. Waren derzeit auf der Suche, um den übergang zu RabbitMQ.
Es gibt einige Diskussionen in den Kommentaren von in diesem blog-postüber Twitter schreiben Ihre eigene message queue, die interessant sein können.
Steve hat umfangreiche Last-und stress
Prüfung von ActiveMQ, RabbitMQ, etc.
ActiveMQ ist eigentlich ziemlich langsam (viel
langsamer als Turmfalke), RabbitMQ
konsequent Abstürze mit zu vielen
Produzenten und zu wenige Verbraucher.
Werden Sie wahrscheinlich nicht haben Twitter-ähnliche laden zunächst jedoch 🙂
Wenigen Anwendungen haben sich so viele tuning-Konfigurationen wie ActiveMQ. Einige features, die ActiveMQ die hervorstechen, sind:
Konfigurierbar-Prefetch-Größe.
Konfigurierbare threading.
Konfigurierbare failover.
Konfigurierbare Benachrichtigung der Behörden an die Erzeuger.
...
details unter:
Abie, es alles kommt down zu Ihrem Anwendungsfall. Anstatt sich auf jemand anderes Konto Ihrer Nutzung Fall, feel free to post your use case zu der rabbitmq-Liste diskutieren. Fragen auf twitter erhalten Sie einige Antworten zu. Beste Grüße, alexis
Über ZeroMQ aka 0MQ, wie Sie vielleicht bereits wissen, ist es die eine, erhalten Sie die meisten Nachrichten pro Sekunden (Sie waren etwa 4 Millionen pro Sekunde auf Ihren ref-server letztes mal ich überprüft), aber wie Sie vielleicht auch bereits wissen, die Dokumentation ist nicht vorhanden. Sie haben eine harte Zeit zu finden, wie zum starten des server(s), geschweige denn wie man Sie benutzt. Ich denke, das ist zum Teil, warum niemand trug über 0MQ noch.
Edit: Meine erste Antwort hatte einen starken Fokus auf AMQP. Habe ich beschlossen Sie neu zu schreiben, bieten eine breitere Sicht auf das Thema.
Diese 3-messaging-Technologien haben unterschiedliche Ansätze für den Aufbau verteilter Systeme :
RabbitMQ ist einer der führenden Implementierung des AMQP-Protokoll (zusammen mit Apache Qpid). Daher implementiert es eine broker-Architektur, was bedeutet, dass Nachrichten in der Warteschlange werden an einen zentralen Knoten, bevor Sie an die Kunden gesendet werden. Dieser Ansatz macht RabbitMQ sehr einfach zu bedienen und bereitstellen, da die erweiterte Szenarien wie routing, load-balancing oder persistent message queuing werden unterstützt, in nur ein paar Zeilen code. Aber es macht es auch weniger skalierbar und die "langsameren", weil der zentrale Knoten die Latenz erhöht und die Nachricht Umschläge sind sehr groß.
ZeroMq ist ein sehr leichtes messaging-system, das speziell für hohen Durchsatz, Latenz und Szenarien wie die, die Sie finden in der Finanzwelt. Zmq unterstützt viele erweiterte messaging-Szenarien, aber im Gegensatz zu RabbitMQ, müssen Sie implementieren die meisten von Ihnen sich durch die Kombination der verschiedenen Teile des Rahmens (e.g : Steckdosen und Geräte). Zmq ist sehr flexibel, aber Sie haben zu studieren, die 80 Seiten oder so von dem guide (ich empfehle die Lektüre für jedermann zu schreiben verteiltes system, auch wenn Sie nicht Zmq), bevor Sie in der Lage zu tun, etwas komplizierter als das versenden von Nachrichten zwischen 2 peers.
ActiveMQ ist in der Mitte. Wie Zmq, es kann eingesetzt werden mit sowohl die broker-und P2P-Topologien. Wie RabbitMQ, es ist einfacher zu implementieren erweiterte Szenarien aber in der Regel auf Kosten der raw-Leistung. Es ist das Schweizer Taschenmesser der messaging :-).
Schließlich alle 3 Produkte:
InformationsquelleAutor der Antwort Julien
Warum haben Sie miss SpatzStarlingTurmfalkeAmazon SQSBeanstalkdKafkaIronMQ ?
Message Queue Server
Message-queue-Server sind verfügbar in verschiedenen Sprachen, Erlang (RabbitMQ), C (beanstalkd), Ruby (Star oder Spatz), Scala (Kestrel, Franz Kafka) oder Java (ActiveMQ). Eine kurze übersicht finden Sie hier
Sparrow
Starling
Kestrel
RabbitMQ
Apache ActiveMQ
Beanstalkd
Amazon SQS
Kafka
ZMQ
EagleMQ
IronMQ
Ich hoffe, dass dies hilfreich sein wird für uns.
Quelle
InformationsquelleAutor der Antwort Andrei Andrushkevich
Mehr Informationen, als würden Sie wissen wollen:
http://wiki.secondlife.com/wiki/Message_Queue_Evaluation_Notes
UPDATE
Nur herausarbeiten, was Paulus Hinzugefügt im Kommentar. Die Seite, die oben erwähnt ist tot nach 2010, also Lesen, mit einer Prise Salz. Viele Sachen wurden geändert in 3 Jahren.
InformationsquelleAutor der Antwort FlySwat
Es wirklich hängt von Ihrem Anwendungsfall.
Vergleich 0MQ mit ActiveMQ oder RabbitMQ ist nicht fair.
ActiveMQ und RabbitMQ sind Messaging-Systeme, welche die installation und Verwaltung.
Sie bieten featurewise viel mehr als ZeroMQ. Sie haben echte persistente Warteschlangen, Unterstützung für Transaktionen etc.
ZeroMQ ist eine leichte message-orientierte socket-Implementierung. Es ist auch geeignet für in-Prozess-asynchrone Programmierung. Es ist möglich, eine "Enterprise-Messaging-System" über ZeroMQ, aber Sie hätte zu implementieren, die eine Menge auf Ihre eigenen.
Also:
ActiveMQ, RabbitMQ, Websphere MQ & MSMQ "Enterprise Message Queues"
ZeroMQ ist eine message-orientierte IPC-Bibliothek.
InformationsquelleAutor der Antwort sanosdole
Es ist ein Vergleich zwischen dem RabbitMQ und ActiveMQ hier. Out of the box, ActiveMQ konfiguriert ist, um zu garantieren, message delivery - was kann der Eindruck seiner langsamen, im Vergleich zu weniger zuverlässigen messaging-Systeme. Sie können immer ändern der Konfiguration für die Leistung, wenn Sie es wünschen und sich mindestens so gute Leistung wie jede andere messaging-system. Zumindest haben Sie diese option. Es gibt eine Menge von Informationen über die Foren und die ActiveMQ-FAQ-Konfiguration für Skalierung, Leistung und hohe Verfügbarkeit. Auch, ActiveMQ unterstützt AMQP 1.0, wenn die Spezifikation abgeschlossen ist, zusammen mit anderen Draht-Formate, wie STOMP.
Weiteres plus für ActiveMQ ist eine Apache-Projekt, also es ist die Vielfalt in der Entwickler-community - und nicht gebunden an eine Firma.
InformationsquelleAutor der Antwort Rob Davies
Habe ich nicht verwendet ActiveMQ oder RabbitMQ haben aber ZeroMQ. Den großen Unterschied sehe ich zwischen ZeroMQ und ActiveMQ etc. ist, dass 0MQ ist brokerless und nicht gebaut haben, in der Zuverlässigkeit für die Nachrichtenübermittlung. Wenn Sie sich für eine einfach zu bedienende messaging-API unterstützt viele messaging-Muster, - Transporte, - Plattformen und-Sprachanbindung dann 0MQ ist definitiv einen Blick Wert. Wenn Sie suchen für eine vollständige geblasen-messaging-Plattform, dann 0MQ kann nicht passen die Rechnung.
Sehen http://www.zeromq.org/docs:cookbook für viele Beispiele, wie 0MQ verwendet werden kann.
Ich eine erfolgreich mit 0MQ für message passing in einer Stromkosten-monitoring-Anwendung (siehe http://rwscott.co.uk/2010/06/14/currentcost-envi-cc128-part-1/)
InformationsquelleAutor der Antwort Bob Scott
Ich bin mit zeroMQ. Ich wollte eine einfache message-passing-system und ich brauche nicht die Komplikation einer broker. Ich will auch nicht eine riesige Java-orientierten enterprise-system.
Wenn Sie wollen eine schnelle, einfache system, und Sie brauchen, um Unterstützung für mehrere Sprachen (ich benutze C und .net) dann würd ich empfehlen, sich auf 0MQ.
InformationsquelleAutor der Antwort Nick
Kann ich nur hinzufügen, meine 2 cents über ActiveMQ, aber da dies ist einer der beliebtesten:
Die Sprache, die Sie schreiben möchten wichtig sein könnte. Obwohl ActiveMQ hat einen client für die meisten, Ihre C# - Implementierung ist bei weitem nicht vollständig, im Vergleich zu der Java-Bibliothek.
Bedeutet dies, dass einige grundlegende Funktionen unzuverlässig ist (fail-over Protokoll, dass ... na ja ... fehl in einigen Fällen, keine Rückgabe-Unterstützung) und andere einfach nicht da ist. Da .NET scheint nicht alles zu sein, die wichtig für das Projekt, die Entwicklung ist eher slowish, und es scheint nicht zu jedem release-plan. Kofferraum ist oft gebrochen, so dass, wenn Sie tun, betrachten Sie dieses, möchten Sie vielleicht zu prüfen, einen Beitrag zu dem Projekt, wenn Sie wollen, dass die Dinge voran gehen.
Dann gibt es ActiveMQ selbst die hat eine Menge nette features, aber einige sehr seltsame Fragen aswell. Wir verwenden die Sicherung (Progress) version von activemq für Stabilität Gründen, aber selbst dann gibt es ein paar seltsame "bugs", die Sie wollen im Auge zu behalten:
Alle und alle, es ist ein nettes Produkt, WENN Sie Leben können mit Ihren Fragen:
A) nicht Angst, sich aktiv zu engagieren, wenn mit .NETTO
B) entwickeln Sie in java 😉
InformationsquelleAutor der Antwort Noctris
ZeroMQ ist wirklich mit null Warteschlangen! Es ist ein wirklich Fehler! Es nicht hav-Warteschlangen, Themen, Persistenz, nichts! Es ist nur eine middleware für sockets API. Wenn es das ist, was Sie suchen, cool! ansonsten vergiss es! es ist nicht wie activeMQ oder rabbitmq.
InformationsquelleAutor der Antwort Angek
Gibt es einen Vergleich der features und der Leistung von RabbitMQ, ActiveMQ und QPID gegeben
http://bhavin.directi.com/rabbitmq-vs-apache-activemq-vs-apache-qpid/
Persönlich habe ich versucht, alle der drei oben genannten. RabbitMQ ist die beste performance weisen nach mir, aber es hat nicht die failover-und recovery-Optionen. ActiveMQ hat die meisten Funktionen, ist aber langsamer.
Update :
HornetQ ist auch eine option, die Sie einsehen können, ist es JMS Beschwerde, eine bessere option als ActiveMQ wenn Sie sich für eine JMS-basierte Lösung.
InformationsquelleAutor der Antwort sheki
Schrieb ich über meine ersten Erfahrungen mit AMQP, Qpid und ZeroMQ hier: http://ron.shoutboot.com/2010/09/25/is-ampq-for-you/
Meine subjektive Meinung ist, dass AMQP ist in Ordnung, wenn Sie wirklich brauchen, das persistent messaging-Einrichtungen und ist nicht allzu besorgt zu sein, dass der Makler möglicherweise einen Engpass dar. Auch C++ - client ist zur Zeit fehlt für AMQP (Qpid nicht gewinnen, meine Unterstützung; nicht sicher über die ActiveMQ-client gibt es jedoch nicht), aber vielleicht ist work in progress. ZeroMQ kann der Weg anders.
InformationsquelleAutor der Antwort ron
Habe ich verwendet ActiveMQ in einer Produktionsumgebung für über 3 Jahre jetzt. Während es bekommt den job getan, Schlange Versionen der client-Bibliotheken, dass die Arbeit richtig und bug frei kann ein Problem sein. Waren derzeit auf der Suche, um den übergang zu RabbitMQ.
InformationsquelleAutor der Antwort Kelly
Es gibt einige Diskussionen in den Kommentaren von in diesem blog-postüber Twitter schreiben Ihre eigene message queue, die interessant sein können.
Werden Sie wahrscheinlich nicht haben Twitter-ähnliche laden zunächst jedoch 🙂
InformationsquelleAutor der Antwort crb
Wenigen Anwendungen haben sich so viele tuning-Konfigurationen wie ActiveMQ. Einige features, die ActiveMQ die hervorstechen, sind:
Konfigurierbar-Prefetch-Größe.
Konfigurierbare threading.
Konfigurierbare failover.
Konfigurierbare Benachrichtigung der Behörden an die Erzeuger.
...
details unter:
http://activemq.net/blog
http://activemq.apache.org
InformationsquelleAutor der Antwort cobrien
Abie, es alles kommt down zu Ihrem Anwendungsfall. Anstatt sich auf jemand anderes Konto Ihrer Nutzung Fall, feel free to post your use case zu der rabbitmq-Liste diskutieren. Fragen auf twitter erhalten Sie einige Antworten zu. Beste Grüße, alexis
InformationsquelleAutor der Antwort
Über ZeroMQ aka 0MQ, wie Sie vielleicht bereits wissen, ist es die eine, erhalten Sie die meisten Nachrichten pro Sekunden (Sie waren etwa 4 Millionen pro Sekunde auf Ihren ref-server letztes mal ich überprüft), aber wie Sie vielleicht auch bereits wissen, die Dokumentation ist nicht vorhanden. Sie haben eine harte Zeit zu finden, wie zum starten des server(s), geschweige denn wie man Sie benutzt. Ich denke, das ist zum Teil, warum niemand trug über 0MQ noch.
Spaß haben!
InformationsquelleAutor der Antwort Charle
Wenn Sie auch daran interessiert, kommerzielle Implementierungen, sollten Sie einen Blick auf Nirvana aus meine-Kanäle.
Nirvana verwendet wird, stark in der Financial Services Industrie für großflächige low-latency-trading und Preis-distribution-Plattformen.
Gibt es Unterstützung für eine Breite Palette von client-Programmierung Sprachen über die enterprise, web und mobile domains.
Den clustering-Fähigkeiten sind sehr weit entwickelt und einen Blick Wert, wenn transparente HA oder Lastverteilung ist wichtig für Sie.
Nirvana ist kostenlos zum download für Entwicklung Zwecke.
InformationsquelleAutor der Antwort eddie mcdaid