Question ActiveMQ ou RabbitMQ ou ZeroMQ ou [fermé]


Nous serions curieux d'entendre des expériences avec les avantages et les inconvénients de ActiveMQ vs RabbitMQ vs ZeroMQ. Les informations sur les autres files d'attente de messages intéressantes sont également les bienvenues.


646
2018-04-08 18:26


origine


Réponses:


Modifier: 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 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 attente de messages persistants sont pris en charge dans 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 différentes parties du framework (par exemple: sockets et devices). Zmq est très flexible mais vous devrez étudier 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 dans le milieu. Comme Zmq, il peut être déployé avec des topologies de courtier et de 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 clients apis pour les langages les plus courants (C ++, Java, .Net, Python, Php, Ruby, ...)
  • avoir une documentation solide
  • sont activement soutenus

343
2017-11-06 13:46



Pourquoi avez-vous manqué Moineau, Étourneau, Crécerelle, 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
  • Sparrow est une file d'attente légère écrite en Ruby qui "parle memcache"

Étourneau

Crécerelle

  • écrit par Robey Pointer
  • Starling clone écrit en Scala (un port de Starling de Ruby à Scala)
  • Les files d'attente sont stockées en mémoire mais enregistrées sur le disque

RabbitMQ

  • RabbitMQ est un serveur de file d'attente de messages à Erlang
  • stocke les travaux en mémoire (file d'attente de messages)

Apache ActiveMQ

  • ActiveMQ est un courtier de messages open source en Java

Beanstalkd

Amazon SQS

Kafka

  • Écrit à LinkedIn à Scala
  • Utilisé par LinkedIn pour décharger le traitement de toutes les pages et autres vues
  • Par défaut, en utilisant la persistance, utilise le cache disque du système d'exploitation pour les données chaudes (le débit est plus élevé que tout ce qui précède, la persistance étant activée)
  • Prise en charge à la fois en ligne et hors ligne

ZMQ

  • La bibliothèque de socket qui agit comme un cadre de concurrence
  • Plus rapide que TCP, pour les produits en cluster et le supercalcul
  • Transmet les messages via inproc, IPC, TCP et multicast
  • Connectez N-à-N par l'intermédiaire de fanout, pubsub, pipeline, request-reply
  • E / S Asynch pour les applications de transmission de messages multicœur évolutives

EagleMQ

  • EagleMQ est un gestionnaire de files d'attente open source, performant et léger.
  • Écrit en C
  • Stocke toutes les données en mémoire et prend en charge la persistance.
  • Il a son propre protocole. Prend en charge 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. la source


174
2018-03-18 09:17



Plus d'informations que vous voudriez savoir:

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


METTRE À JOUR

Juste élaborer ce que Paul a ajouté dans le commentaire. le page mentionnée ci-dessus est mort après 2010, alors lisez avec une pincée de sel. Beaucoup de choses ont été changées en 3 ans.

History of Wiki Page


83
2018-04-08 20:46



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 queues persistantes, le soutien 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 de processus. Il est possible d'exécuter un "système de messagerie d'entreprise" sur ZeroMQ, mais il vous faudra beaucoup d'implémentation par vous-même.

Alors:

ActiveMQ, RabbitMQ, Websphere MQ et MSMQ sont des "files d'attente de messages d'entreprise"

ZeroMQ est une bibliothèque IPC orientée message.


71
2018-02-02 19:06



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 qu'il est lent par rapport aux systèmes de messagerie moins fiables. Vous pouvez toujours modifier la configuration pour des performances si vous le souhaitez et obtenir au moins les mêmes performances 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é. En outre, ActiveMQ prend en charge AMQP 1.0 lorsque la spécification est finalisée, avec d'autres formats de fil, comme STOMP.

Un autre atout pour ActiveMQ est son projet Apache, il y a donc une diversité dans la communauté des développeurs - et ce n'est pas lié à une entreprise.


34
2017-10-20 17:26



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 agent et n'a pas de fiabilité intégrée pour la livraison des messages. Si vous recherchez une API de messagerie facile à utiliser qui prend en charge de nombreux modèles de messagerie, transports, plates-formes et liaisons de langues, alors 0MQ vaut vraiment la peine d'être consulté. Si vous cherchez une plate-forme de messagerie complète, alors 0MQ peut ne pas correspondre à la facture.

Voir www.zeromq.org/docs:cookbook pour de nombreux exemples de la façon dont 0MQ peut être utilisé.

J'utilise avec succès 0MQ pour le passage de messages dans une application de surveillance de l'utilisation de l'électricité (voir http://rwscott.co.uk/2010/06/14/currentcost-envi-cc128-part-1/)


22
2017-08-24 07:28



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 rapide et simple et que vous avez besoin de prendre en charge plusieurs langues (j'utilise C et .net) alors je vous recommande de regarder 0MQ.


14
2017-07-28 16:18



Je peux seulement ajouter 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 C # est loin d'être complète par rapport à la bibliothèque Java.

Cela signifie que certaines fonctionnalités de base sont floues (protocole de fail-over qui ... eh bien ... échoue dans certains cas, pas de support de relivraison) et d'autres ne sont tout simplement pas là. Comme .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 lancement. Le coffre est souvent cassé, donc si vous considérez cela, vous pouvez envisager de contribuer au projet si vous voulez que les choses aillent de l'avant.

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 là, il y a quelques "bugs" bizarres que vous voulez garder à l'esprit:

  • Les courtiers qui cessent d'envoyer des messages à certaines occasions
  • Les erreurs de journal faisant apparaître dans la file d'attente les messages qui n'y sont plus (ils ne sont pas remis au consommateur mais quand même)
  • La priorité n'est toujours pas implémentée (est sur la liste des problèmes depuis le début du genre humain)
  • etc.

Dans l'ensemble, c'est un 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) développer en Java ;-)


10
2017-10-29 09:47



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! C'est seulement un middleware pour l'API sockets. Si c'est ce que vous cherchez cool! sinon oublie ça! ce n'est pas comme ActiveMQ ou Rabbitmq.


8
2017-08-19 14:49



Il existe une comparaison des caractéristiques et des performances de RabbitMQ ActiveMQ et QPID
http://bhavin.directi.com/rabbitmq-vs-apache-activemq-vs-apache-qpid/

Personnellement, j'ai essayé tous les trois ci-dessus. RabbitMQ est la meilleure des 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.

Mettre à jour : HornetQ C'est aussi une option que vous pouvez examiner, c'est JMS Complaint, une meilleure option que ActiveMQ si vous cherchez une solution basée sur JMS.


8
2017-08-23 11:05