645 votes

ActiveMQ ou RabbitMQ ou ZeroMQ ou

Nous serions intéressés par toute expérience concernant les avantages et les inconvénients d'ActiveMQ, RabbitMQ ou ZeroMQ. Toute information sur d'autres files d'attente de messages intéressantes est également la bienvenue.

342voto

Julien Points 5966

Edit : Ma réponse initiale était fortement axée sur AMQP. J'ai décidé de la réécrire pour offrir une vision plus large du sujet.

Ces trois technologies de messagerie ont des approches différentes de la construction de systèmes distribués :

RabbitMQ est l'une des principales implémentations du protocole AMQP (avec Apache Qpid). Il met donc en œuvre 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 persistante des messages sont pris en charge en quelques lignes de code seulement. Cependant, elle 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 et faible latence comme ceux que l'on trouve dans le monde financier. Zmq prend en charge de nombreux scénarios de messagerie avancés, mais contrairement à RabbitMQ, vous devrez mettre en œuvre la plupart d'entre eux vous-même en combinant divers éléments du framework (par exemple : sockets et périphériques). Zmq est très flexible, mais vous devrez étudier les fonctionnalités de l'application. 80 pages environ du guide (dont je recommande la lecture à tous ceux qui écrivent des systèmes distribués, 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 se situe dans une position intermédiaire. 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 détriment des performances brutes. C'est le couteau suisse de la messagerie :-).

Enfin, les 3 produits :

  • avoir des apis clients pour les langages les plus courants (C++, Java, .Net, Python, Php, Ruby, )
  • disposer d'une documentation solide
  • sont activement soutenus

174voto

Pourquoi avez-vous manqué Moineau , Starling , Kestrel , Amazon SQS , Beanstalkd , Kafka , IronMQ ?

Serveurs de file d'attente de messages

Les serveurs de file d'attente de messages sont disponibles dans différents langages, Erlang (RabbitMQ), C (beanstalkd), Ruby (Starling ou Sparrow), Scala (Kestrel, Kafka) ou Java (ActiveMQ). Un bref aperçu peut être trouvé aquí

Moineau

  • écrit par Alex MacCaw
  • Sparrow est une file d'attente légère écrite en Ruby qui "parle memcache".

Starling

Kestrel

  • écrit par Robey Pointer
  • Clone de Starling écrit en Scala (un portage 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 en 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 en Scala
  • Utilisé par LinkedIn pour décharger le traitement de toutes les pages et autres vues.
  • Par défaut, la persistance est utilisée, le cache disque du système d'exploitation est utilisé pour les données chaudes (le débit est supérieur à celui de toutes les solutions ci-dessus dont la persistance est activée).
  • Prise en charge du traitement 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 grappe et les superordinateurs.
  • Transporte les messages à travers inproc, IPC, TCP et multicast.
  • Connecter N-to-N via fanout, pubsub, pipeline, request-reply
  • Entrées/sorties asynchrones pour les applications multicœurs évolutives de passage de messages

EagleMQ

  • EagleMQ est un gestionnaire de file 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 dispose de son propre protocole. Il permet de travailler avec des files d'attente, des routes et des canaux.

IronMQ

  • IronMQ
  • Écrit en Go
  • Service de file d'attente entièrement géré
  • Disponible en version "cloud" et "on-premise".

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

83voto

FlySwat Points 61945

Plus d'informations que vous ne voudriez en savoir :

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


UPDATE

Je ne fais que développer ce que Paul a ajouté en commentaire. Le site page mentionnée ci-dessus est mort après 2010, donc à lire avec une pincée de sel. Beaucoup de choses ont été changées en 3 ans.

History of Wiki Page

71voto

sanosdole Points 1577

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 légère de socket orientée message. Il est également adapté à la programmation asynchrone en cours de processus. Il est possible d'exécuter un "système de messagerie d'entreprise" sur ZeroMQ, mais vous devrez mettre en œuvre beaucoup de choses par vous-même.

Donc :

ActiveMQ, RabbitMQ, Websphere MQ et MSMQ sont des "Enterprise Message Queues".

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

34voto

Rob Davies Points 570

Il y a une comparaison entre RabbitMQ et ActiveMQ. aquí . Par défaut, ActiveMQ est configuré pour garantir la livraison des messages - ce qui peut donner l'impression qu'il est lent comparé à des systèmes de messagerie moins fiables. Vous pouvez toujours modifier la configuration pour les performances si vous le souhaitez et obtenir des performances au moins aussi bonnes que celles de tout autre système de messagerie. Au moins, vous avez cette possibilité. Il y a beaucoup d'informations sur les forums et la FAQ ActiveMQ concernant la configuration pour la mise à l'échelle, les performances et la haute disponibilité. De plus, ActiveMQ supportera AMQP 1.0 lorsque la spécification sera finalisée, ainsi que d'autres formats de fils, comme STOMP.

Un autre avantage pour ActiveMQ est qu'il s'agit d'un projet Apache, donc il y a une diversité dans la communauté des développeurs - et il n'est pas lié à une entreprise.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X