Nous serions intéressés d'entendre toute expérience avec les avantages et les inconvénients d'ActiveMQ vs RabbitMQ vs ZeroMQ. Des informations sur toute autre file d'attente de messages intéressante sont également les bienvenues.
Nous serions intéressés d'entendre toute expérience avec les avantages et les inconvénients d'ActiveMQ vs RabbitMQ vs ZeroMQ. Des informations sur toute autre file d'attente de messages intéressante sont également les bienvenues.
Réponses:
Edit: Ma réponse initiale était fortement axée 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 de courtier, ce qui signifie que les messages sont mis en file d'attente sur un nœud central avant d'être envoyés aux clients. Cette approche rend RabbitMQ très facile à utiliser et à déployer, car des scénarios avancés tels que le routage, l'équilibrage de charge ou la mise en file d'attente de messages persistante sont pris en charge en quelques lignes de code. Cependant, cela le rend également moins évolutif et «plus lent» car le nœud central ajoute de la latence et les enveloppes de messages sont assez grandes.
ZeroMq est un système de messagerie très léger spécialement conçu pour les scénarios à haut 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 devrez implémenter la plupart d'entre eux vous-même en combinant divers éléments du cadre (par exemple: sockets et périphériques). Zmq est très flexible mais vous devrez étudier les 80 pages environ du guide (que je recommande de lire pour quiconque écrit un système distribué, même si vous n'utilisez pas Zmq) avant de pouvoir faire 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 de courtier et P2P. Comme RabbitMQ, il est plus facile de mettre en œuvre des scénarios avancés, mais généralement au détriment des performances brutes. C'est le couteau suisse de la messagerie :-).
Enfin, les 3 produits:
Pourquoi avez-vous manqué Sparrow , Starling , Kestrel , Amazon SQS , Beanstalkd , Kafka , IronMQ ?
Serveurs Message Queue
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
Étourneau
Crécerelle
RabbitMQ
Apache ActiveMQ
Beanstalkd
Amazon SQS
Kafka
ZMQ
EagleMQ
IronMQ
J'espère que cela nous sera utile. la source
Plus d'informations que vous ne voudriez en savoir:
http://wiki.secondlife.com/wiki/Message_Queue_Evaluation_Notes
J'élabore simplement ce que Paul a ajouté en commentaire. La page mentionnée ci-dessus est morte après 2010, alors lisez avec une pincée de sel. Beaucoup de choses ont été changées en 3 ans.
Cela dépend vraiment de votre cas d'utilisation.
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 beaucoup plus de fonctionnalités 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 à la programmation asynchrone en cours. Il est possible d'exécuter un "système de messagerie d'entreprise" sur ZeroMQ, mais vous devrez en implémenter beaucoup vous-même.
Donc:
ActiveMQ, RabbitMQ, Websphere MQ & MSMQ sont des "files de messages d'entreprise"
ZeroMQ est une bibliothèque IPC orientée message.
Il y a une comparaison entre RabbitMQ et ActiveMQ ici . Prêt à l'emploi, ActiveMQ est configuré pour garantir la livraison des messages - ce qui peut donner l'impression d'être lent par rapport aux systèmes de messagerie moins fiables. Vous pouvez toujours modifier la configuration des performances si vous le souhaitez et obtenir au moins des performances aussi bonnes que tout autre système de messagerie. Au moins, vous avez cette option. Il y a beaucoup d'informations sur les forums et la FAQ ActiveMQ pour la configuration pour la mise à l'échelle, les performances 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 fil, comme STOMP.
Un autre avantage pour ActiveMQ est son projet Apache, donc il y a de la diversité dans la communauté des développeurs - et ce n'est pas lié à une seule entreprise.
Je n'ai pas utilisé ActiveMQ ou RabbitMQ mais j'ai utilisé ZeroMQ. La grande différence que je vois entre ZeroMQ et ActiveMQ etc. est que 0MQ est sans courtier et n'a pas de fiabilité intégrée pour la livraison des messages. Si vous recherchez une API de messagerie facile à utiliser prenant en charge de nombreux modèles de messagerie, transports, plates-formes et liaisons linguistiques, alors 0MQ vaut vraiment le coup d'œil. Si vous recherchez une plate-forme de messagerie complète, 0MQ peut ne pas convenir.
Voir www.zeromq.org/docs:cookbook pour de nombreux exemples d'utilisation de 0MQ.
J'utilise avec succès 0MQ pour le passage de messages dans une application de surveillance de la consommation d'électricité (voir http://rwscott.co.uk/2010/06/14/currentcost-envi-cc128-part-1/ )
J'utilise zeroMQ. Je voulais un système de transmission de messages simple 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 orienté Java.
Si vous voulez un système simple et rapide et que vous devez prendre en charge plusieurs langues (j'utilise C et .net), je vous recommande de regarder 0MQ.
Je peux seulement ajouter mes 2 cents sur ActiveMQ mais comme c'est l'un des plus populaires:
La langue dans laquelle vous souhaitez écrire peut être importante. Bien qu'ActiveMQ ait un client pour la plupart, leur implémentation C # est loin d'être complète par rapport à la bibliothèque Java.
Cela signifie que certaines fonctionnalités de base sont instables (protocole de basculement qui ... eh bien ... échoue dans certains cas, pas de support de redistribution) et d'autres tout simplement pas là. Étant donné que .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 version. Le tronc est souvent cassé, donc si vous y réfléchissez, vous voudrez peut-être envisager de contribuer au projet si vous voulez que les choses avancent.
Ensuite, il y a ActiveMQ lui-même qui a beaucoup de fonctionnalités intéressantes mais aussi des problèmes très étranges. Nous utilisons la version Fuse (Progress) d'activemq pour des raisons de stabilité, mais même dans ce cas, vous devez garder à l'esprit quelques "bugs" étranges:
Dans l'ensemble, c'est un très joli produit SI vous pouvez vivre avec ses problèmes:
A) n'ont pas peur de s'impliquer activement lors de l'utilisation de .NET
B) de développer en java ;-)
ZeroMQ est vraiment avec zéro files d'attente! C'est vraiment une erreur! Il n'a pas de files d'attente, de sujets, de persistance, rien! Il ne s'agit que d'un middleware pour l'API sockets. Si c'est ce que vous cherchez cool! sinon oubliez ça! ce n'est pas comme activeMQ ou rabbitmq.
Il y a une comparaison des fonctionnalités et des performances de RabbitMQ ActiveMQ et QPID données à
http://bhavin.directi.com/rabbitmq-vs-apache-activemq-vs-apache-qpid/
Personnellement, j'ai essayé les trois ci-dessus. RabbitMQ est le meilleur en termes de performances 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 également une option que vous pouvez examiner, c'est JMS Complaint, une meilleure option qu'ActiveMQ si vous recherchez une solution basée sur JMS.
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 l'AMQP est bien si vous avez vraiment besoin des installations de messagerie persistante et n'est pas trop préoccupé par le fait que le courtier puisse être un goulot d'étranglement. En outre, le client C ++ est actuellement manquant pour AMQP (Qpid n'a pas gagné mon support; je ne suis pas sûr du client ActiveMQ cependant), mais peut-être un travail en cours. ZeroMQ peut être le contraire.
J'utilise ActiveMQ dans un environnement de production depuis environ 3 ans maintenant. Pendant que le travail est fait, l'alignement des versions des bibliothèques clientes qui fonctionnent correctement et sont exemptes de bogues peut être un problème. Étaient actuellement à la recherche d'une transition vers RabbitMQ.
Il y a une discussion dans les commentaires de ce blog , sur Twitter écrivant leur propre file d'attente de messages, ce qui peut être intéressant.
Steve a effectué des tests de charge et de stress approfondis sur ActiveMQ, RabbitMQ, etc.
Cependant, vous n'aurez probablement pas de charge semblable à Twitter au début :)
Peu d'applications ont autant de configurations de réglage qu'ActiveMQ. Certaines fonctionnalités qui distinguent ActiveMQ sont:
Taille Prefetch configurable. Filetage configurable. Basculement configurable. Notification administrative configurable aux producteurs. ... détails sur:
Abie, tout se résume à votre cas d'utilisation. Plutôt que de compter sur le compte de quelqu'un d'autre de son cas d'utilisation, n'hésitez pas à publier votre cas d'utilisation sur la liste rabbitmq-discuter. En demandant sur Twitter, vous obtiendrez également des réponses. Meilleurs voeux, alexis
À propos de ZeroMQ aka 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 de référence la dernière fois que j'ai vérifié), mais comme vous le savez peut-être déjà, le 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 pourquoi personne n'a encore contribué à 0MQ.
S'amuser!
Si vous êtes également intéressé par les implémentations commerciales, vous devriez jeter un œil à Nirvana depuis my-channel .
Nirvana est largement utilisé dans l'industrie des services financiers pour les plateformes de trading et de distribution de prix à faible latence à grande échelle.
Il existe une prise en charge d'un large éventail de langages de programmation client dans les domaines d'entreprise, Web et mobile.
Les capacités de clustering sont extrêmement avancées et valent le détour si une HA transparente ou un équilibrage de charge est important pour vous.
Nirvana est téléchargeable gratuitement à des fins de développement.