ActiveMQ ou RabbitMQ ou ZeroMQ ou [fermé]

nous aimerions connaître les avantages et les inconvénients de ActiveMQ vs RabbitMQ vs ZeroMQ. Les informations sur toute autre file d'attente de messages intéressants sont également les bienvenues.

646
demandé sur Aniket Thakur 2009-04-08 22:26:03

17 réponses

Edit: ma réponse initiale mettait fortement l'accent sur L'AMQP. J'ai décidé de le réécrire pour offrir une vue plus large sur le sujet.

ces 3 technologies de messagerie ont des approches différentes sur la construction de systèmes distribués:

RabbitMQ est l'une des principales implémentations du protocole AMQP (avec Apache Qpid). Par conséquent, il implémente une architecture broker, ce qui signifie que les messages sont mis en file d'attente sur un nœud central avant d'être envoyé aux clients. Cette approche rend RabbitMQ très facile à utiliser et à déployer, car des scénarios avancés comme le routage, l'équilibrage de la charge ou la mise en file d'attente de messages persistants sont pris en charge en seulement quelques lignes de code. Cependant, il le rend également moins extensible et "plus lent" parce que le noeud central ajoute la latence et les enveloppes de message sont assez grandes.

ZeroMq est un système de messagerie très léger spécialement conçu pour scénarios de débit / faible latence comme celui que vous pouvez trouver dans le monde financier. Zmq prend en charge de nombreux scénarios de messagerie avancés, mais contrairement à RabbitMQ, vous aurez à mettre en œuvre la plupart d'entre eux vous-même en combinant divers éléments du cadre (E. g: sockets and devices). Zmq est très flexible, mais vous aurez à étudier les 80 pages ou plus du guide (que je recommande la lecture pour toute personne écrivant système distribué, même si vous n'utilisez pas Zmq) avant de pouvoir faites quelque chose de plus compliqué que d'envoyer des messages entre 2 pairs.

ActiveMQ est au milieu. Comme Zmq, il peut être déployé avec les topologies broker et P2P. Comme RabbitMQ, il est plus facile de mettre en œuvre des scénarios avancés, mais généralement au prix de performances brutes. C'est le couteau Suisse de la messagerie :-).

enfin, tous les 3 produits:

  • avoir des IPA clients pour les plus courants languages (C++, Java, .Net, Python, Php, Ruby, ...)
  • ont une forte documentation
  • sont activement soutenus
343
répondu Julien 2013-08-27 06:50:33

Why did you missed Sparrow , Starling , Kestrel , Amazon SQS , Beanstalkd , Kafka , ironmq ?

Serveurs De File D'Attente De Messages

Les serveurs de file D'attente de messages

sont disponibles en plusieurs langues, Erlang (RabbitMQ), C (beanstalkd), Ruby (Starling ou Sparrow), Scala (Kestrel, Kafka) Ou Java (ActiveMQ). Un bref aperçu peut être trouvé ici

Moineau

  • , écrit par Alex MacCaw
  • Moineau est un léger file d'attente écrit en Ruby qui "parle memcache"

Starling

Kestrel

  • écrit par Robey Pointter
  • Starling clone écrit en Scala (un port de Starling de Ruby à la Scala)
  • les Files d'attente sont stockées en mémoire, mais enregistrées sur le disque

RabbitMQ

  • RabbitMQ est un Message de la File d'attente du Serveur en Erlang
  • stocke les jobs en mémoire (file d'attente de messages)

Apache ActiveMQ

  • ActiveMQ est un open source de message broker en Java

Beanstalkd

Amazon SQS

Kafka

  • écrit à LinkedIn en Scala
  • utilisé par LinkedIn pour décharger le traitement de toutes les pages et autres vues
  • utilise par défaut persistence, utilise OS disk cache pour les données chaudes (a un débit plus élevé que n'importe lequel des précédents ayant persistence activé)
  • supporte les deux en ligne comme traitement hors ligne

ZMQ

  • La bibliothèque de socket qui agit comme une simultanéité cadre
  • plus rapide que TCP, pour les produits groupés et superinformatique
  • transporte des messages à travers inproc, IPC, TCP ,et multicast
  • Connect N-de-N via sortance, pubsub, de pipeline, de requête-réponse
  • Asynch I/O pour évolutif multicœur de passage de message apps

EagleMQ

  • EagleMQ est un gestionnaire de file d'attente ouvert, performant et léger.
  • écrit en C
  • stocke toutes les données en mémoire et supporte la persistance.
  • Il a son propre protocole. Soutient le travail avec les files d'attente, les itinéraires et les canaux.

IronMQ

  • IronMQ
  • écrit en Go
  • service de file d'attente entièrement géré
  • disponible à la fois en version cloud et sur site

j'espère que cela nous sera utile. source

174
répondu Andrei Andrushkevich 2014-04-30 05:40:23

plus d'informations que vous ne voudriez savoir:

http://wiki.secondlife.com/wiki/Message_Queue_Evaluation_Notes


mise à JOUR

en train d'élaborer ce que Paul a ajouté dans son commentaire. La page mentionnée ci-dessus est morte après 2010, donc lu avec une pincée de sel. Beaucoup de choses ont été changé en 3 ans.

History of Wiki Page

83
répondu FlySwat 2013-12-24 14:03:53

cela dépend vraiment de votre étui.

comparer 0MQ avec ActiveMQ ou RabbitMQ n'est pas juste. ActiveMQ et RabbitMQ sont des systèmes de messagerie qui nécessitent une installation et une administration. Ils offrent featurewise beaucoup plus que ZeroMQ. Ils ont de vraies Files d'attente persistantes, un Support pour les transactions, etc.

ZeroMQ est une implémentation de socket légère orientée message. Il convient également pour la programmation asynchrone en cours de fabrication. Il est possibilité d'exécuter un "système de messagerie D'entreprise" au-dessus de ZeroMQ, mais vous auriez à mettre en œuvre beaucoup sur votre propre.

:

ActiveMQ, RabbitMQ, Websphere MQ & MSMQ are "Enterprise Message Queues"

ZeroMQ est une bibliothèque de la CIB axée sur les messages.

71
répondu sanosdole 2014-03-22 21:12:30

il y a une comparaison entre RabbitMQ et ActiveMQ ici . Out of the box, ActiveMQ est configuré pour garantir la livraison des messages - ce qui peut donner l'impression de sa lenteur par rapport à des systèmes de messagerie moins fiables. Vous pouvez toujours modifier la configuration pour des performances si vous le souhaitez et obtenir au moins aussi bonnes performances que n'importe quel autre système de messagerie. Au moins, vous avez la possibilité de. Il ya beaucoup d'informations sur les forums et la FAQ ActiveMQ pour configuration pour la mise à l'échelle, la performance et la haute disponibilité. De plus, ActiveMQ prendra en charge AMQP 1.0 lorsque la spécification sera finalisée, ainsi que d'autres formats de fils, comme STOMP.

un autre plus pour ActiveMQ est son projet an Apache, donc il y a de la diversité dans la communauté des développeurs - et il n'est pas lié à une seule entreprise.

34
répondu Rob Davies 2009-12-04 14:31:05

Je n'ai pas utilisé ActiveMQ ou RabbitMQ mais ZeroMQ. La grande différence que je vois entre ZeroMQ et ActiveMQ etc. est-ce que 0MQ est sans courtier et n'a pas de fiabilité intégrée pour la livraison des messages. Si vous êtes à la recherche d'une API de messagerie facile à utiliser supportant de nombreux modèles de messagerie,les transports, les plateformes et les reliures de langue, alors 0MQ est certainement la peine d'un coup d'oeil. Si vous êtes à la recherche d'une plateforme de messagerie complète, alors 0MQ pourrait ne pas correspondre à la facture.

voir www.zeromq.org/docs:cookbook pour de nombreux exemples d'utilisation de 0MQ.

je un avec succès à l'aide de 0MQ pour la transmission de message à l'utilisation d'électricité, la surveillance de l'application (voir http://rwscott.co.uk/2010/06/14/currentcost-envi-cc128-part-1/ )

22
répondu Bob Scott 2011-02-22 19:21:33

j'utilise zeroMQ. Je voulais un simple système de transmission de messages et je n'ai pas besoin de la complication d'un courtier. Je ne veux pas non plus D'un énorme système D'entreprise axé sur Java.

si vous voulez un système simple et rapide et que vous devez prendre en charge plusieurs langues (j'utilise C et .net), alors je recommande de regarder 0MQ.

14
répondu Nick 2010-07-28 16:18:54

Je ne peux ajouter que mes 2 cents sur ActiveMQ mais puisque c'est l'un des plus populaires:

la langue dans laquelle vous voulez écrire peut être importante. Bien Qu'ActiveMQ ait un client pour la plupart, leur implémentation de C# est loin d'être complète par rapport à la bibliothèque Java.

Cela signifie que certaines fonctionnalités de base est feuilletée (fail-over protocole ... bien. .. échoue dans certains cas, aucune nouvelle livraison de soutien) et d'autres n'est tout simplement pas là. Depuis. net ne semble pas être si important pour le projet, le développement est plutôt lent et il ne semble pas y avoir de plan de libération. Le tronc est souvent cassé donc si vous considérez ceci, vous pourriez vouloir considérer contribuer au projet si vous voulez que les choses aillent de l'avant.

puis il y a ActiveMQ lui-même qui a beaucoup de jolies caractéristiques mais aussi des problèmes très étranges. Nous utilisons la version Fuse (Progress) d'activemq pour des raisons de stabilité mais même alors il ya un couple bizarre les "bugs" que vous voulez garder à l'esprit:

  • Courtiers d'arrêter d'envoyer des messages à certaines occasions
  • erreurs de Journal faisant la file d'attente montrent des messages qui ne sont plus là (ils ne sont pas livrés au consommateur, mais tout de même)
  • , la Priorité est toujours pas mis en œuvre (qui est sur la liste des Problèmes depuis le début de l'homme)
  • etc. etc.

tout et tout, c'est un produit assez agréable si vous pouvez vivre avec ses problèmes:

A) n'ont pas peur de s'impliquer activement lors de L'utilisation de. Net

B) développer en java; -)

10
répondu Noctris 2012-01-06 17:17:12

ZeroMQ est vraiment avec des files d'attente zéro! C'est vraiment une erreur! Il n'a pas de files d'attente, de sujets, de persistance, rien! Il s'agit uniquement d'une API middleware for sockets. Si c'est ce que vous regardez cool! sinon, oubliez ça! ce n'est pas comme activeMQ ou rabbitmq.

8
répondu Angek 2010-08-19 14:49:27

il y a une comparaison des caractéristiques et des performances de RabbitMQ ActiveMQ et QPID donnée à

http://bhavin.directi.com/rabbitmq-vs-apache-activemq-vs-apache-qpid /

Personnellement, j'ai essayé tous les trois ci-dessus. RabbitMQ est la meilleure performance sage selon moi, mais il n'a pas d'options de basculement et de récupération. ActiveMQ a le plus de fonctionnalités, mais est plus lent.

mise à jour : HornetQ est aussi une option que vous pouvez regarder, C'est la plainte JMS, une meilleure option que ActiveMQ si vous cherchez une solution basée sur JMS.

8
répondu sheki 2011-07-06 16:40:27

j'ai écrit sur mon expérience initiale concernant AMQP, Qpid et ZeroMQ ici: http://ron.shoutboot.com/2010/09/25/is-ampq-for-you/

mon opinion subjective est que AMQP est très bien si vous avez vraiment besoin des facilités de messagerie persistante et n'est pas trop préoccupé que le courtier peut être un goulot d'étranglement. En outre, le client C++ est actuellement absent pour AMQP (Qpid n'a pas gagné mon soutien; Pas sûr du client ActiveMQ cependant), mais peut-être travailler dans progrès. ZeroMQ peut être le moyen autrement.

6
répondu ron 2010-09-25 20:13:51

J'utilise ActiveMQ dans un environnement de production depuis environ 3 ans. Pendant qu'il obtient le travail fait, la mise en file d'attente des versions des bibliothèques clientes qui fonctionnent correctement et sont sans bogue peut être un problème. Nous sommes actuellement à la recherche d'une transition vers RabbitMQ.

6
répondu Kelly 2011-05-14 18:12:02

il y a une discussion dans les commentaires de ce billet de blog , à propos de Twitter écrivant leur propre file d'attente de messages, ce qui peut être intéressant.

Steve a fait beaucoup de charge et de stress test D'ActiveMQ, RabbitMQ,etc. ActiveMQ est en fait assez lent (beaucoup plus lent que Kestrel), RabbitMQ s'écrase régulièrement avec trop de les producteurs et trop peu de consommateurs.

vous ne le ferez probablement pas Twitter-comme charge initialement cependant :)

5
répondu crb 2009-04-08 20:33:02

peu d'applications ont autant de configurations de réglage Qu'ActiveMQ. Voici quelques caractéristiques qui distinguent ActiveMQ:

taille Préfetch Configurable. Configurable threading. Configurable de basculement. Notification administrative Configurable aux producteurs. ... pour plus de précisions:

http://activemq.net/blog http://activemq.apache.org

5
répondu cobrien 2010-07-20 19:17:13

Abie, tout se résume à ton étui. Plutôt que de compter sur le compte de quelqu'un d'autre de leur cas d'utilisation, n'hésitez pas à poster votre cas d'utilisation à la rabbitmq-discuter liste. Demander sur twitter vous donnera aussi des réponses. Meilleurs voeux, alexis

0
répondu 2009-05-18 13:07:28

à propos de ZeroMQ alias 0MQ, comme vous le savez peut-être déjà, c'est celui qui vous donnera le plus de messages par seconde (ils étaient environ 4 millions par seconde sur leur serveur ref la dernière fois que j'ai vérifié), mais comme vous le savez peut-être déjà, la documentation est inexistante. Vous aurez du mal à trouver comment démarrer le(s) serveur (s), et encore moins comment les utiliser. Je suppose que c'est en partie la raison pour laquelle personne n'a encore contribué à environ 0MQ.

amusez-vous bien!

0
répondu Charle 2010-05-15 03:06:44

Si vous êtes également intéressé par implémentations commerciales, vous devriez jeter un oeil à Nirvana de mes chaînes .

Nirvana est largement utilisé dans le secteur des Services Financiers pour les plates-formes de négociation et de distribution des prix à faible latence à grande échelle.

il existe un support pour un large éventail de langages de programmation client à travers l'entreprise, le web et les domaines mobiles.

Le regroupement les capacités sont extrêmement avancées et valent le coup d'oeil si l'équilibrage transparent HA ou de charge est important pour vous.

Nirvana est gratuit pour le développement.

0
répondu eddie mcdaid 2010-07-28 08:20:37