Pregunta ActiveMQ o RabbitMQ o ZeroMQ o [cerrado]


Estaríamos interesados ​​en escuchar cualquier experiencia con los pros y los contras de ActiveMQ vs RabbitMQ vs ZeroMQ. También se agradece la información sobre otras colas de mensajes interesantes.


646
2018-04-08 18:26


origen


Respuestas:


Editar: Mi respuesta inicial tenía un fuerte enfoque en AMQP. Decidí reescribirlo para ofrecer una visión más amplia sobre el tema.

Estas 3 tecnologías de mensajería tienen diferentes enfoques para construir sistemas distribuidos:

RabbitMQ es una de las principales implementaciones del protocolo AMQP (junto con Apache Qpid). Por lo tanto, implementa una arquitectura de intermediario, lo que significa que los mensajes se ponen en cola en un nodo central antes de enviarse a los clientes. Este enfoque hace que RabbitMQ sea muy fácil de usar e implementar, porque escenarios avanzados como enrutamiento, equilibrio de carga o persistencia de colas de mensajes son compatibles con solo unas pocas líneas de código. Sin embargo, también lo hace menos escalable y "más lento" porque el nodo central agrega latencia y los sobres de mensaje son bastante grandes.

ZeroMq es un sistema de mensajería muy liviano especialmente diseñado para escenarios de alto rendimiento / baja latencia como el que puedes encontrar en el mundo financiero. Zmq admite muchos escenarios avanzados de mensajería, pero, contrariamente a RabbitMQ, tendrá que implementar la mayoría de ellos usted mismo combinando varias piezas del marco (por ejemplo, sockets y dispositivos). Zmq es muy flexible, pero tendrás que estudiar 80 páginas más o menos de la guía (que recomiendo leer para cualquier persona que escriba el sistema distribuido, incluso si no usa Zmq) antes de poder hacer algo más complicado que enviar mensajes entre 2 pares.

ActiveMQ está en el medio término. Al igual que Zmq, se puede implementar con topologías intermediarias y P2P. Al igual que RabbitMQ, es más fácil implementar escenarios avanzados, pero generalmente a costa del rendimiento en bruto. Es la navaja suiza de mensajería :-).

Finalmente, los 3 productos:

  • tener apis de cliente para los lenguajes más comunes (C ++, Java, .Net, Python, Php, Ruby, ...)
  • tener una fuerte documentación
  • son apoyados activamente

343
2017-11-06 13:46



¿Por qué echas de menos? Gorrión, Estornino, Cernícalo, Amazon SQS, Beanstalkd, Kafka, IronMQ ?

Servidores de Message Queue

servidores de colas de mensajes están disponibles en varios idiomas, Erlang (RabbitMQ), C (beanstalkd), Ruby (Starling o gorrión), Scala (Kestrel, Kafka) o Java (ActiveMQ). Una breve descripción se puede encontrar aquí

Gorrión

  • escrito por Alex MacCaw
  • Sparrow es una cola ligera escrita en Ruby que "habla de Memcache"

Estornino

Cernícalo

  • escrito por Robey Pointer
  • Starling clon escrito en Scala (un puerto de Starling de Ruby a Scala)
  • Las colas se almacenan en la memoria, pero se registran en el disco

RabbitMQ

  • RabbitMQ es un servidor de Message Queue en Erlang
  • almacena trabajos en la memoria (cola de mensajes)

Apache ActiveMQ

  • ActiveMQ es un intermediario de mensajes de código abierto en Java

Beanstalkd

Amazon SQS

Kafka

  • Escrito en LinkedIn en Scala
  • Utilizado por LinkedIn para descargar el procesamiento de todas las páginas y otras vistas
  • El valor predeterminado es el uso de persistencia, utiliza la memoria caché de disco del sistema operativo para los datos activos (tiene un rendimiento más alto que cualquiera de los anteriores con persistencia activada)
  • Admite tanto el procesamiento en línea como fuera de línea

ZMQ

  • La biblioteca de socket que actúa como un marco de concurrencia
  • Más rápido que TCP, para productos en clúster y supercomputación
  • Transmite mensajes en inproc, IPC, TCP y multidifusión
  • Conecte N-to-N a través de fanout, pubsub, pipeline, request-reply
  • Asynch I / O para aplicaciones escalables de paso de mensajes multinúcleo

EagleMQ

  • EagleMQ es un administrador de colas de fuente abierta, alto rendimiento y peso ligero.
  • Escrito en C
  • Almacena todos los datos en la memoria y admite la persistencia.
  • Tiene su propio protocolo. Admite el trabajo con colas, rutas y canales.

IronMQ

  • IronMQ
  • Escrito en Go
  • Servicio de cola totalmente administrado
  • Disponible tanto en versión en la nube como en las instalaciones

Espero que esto sea útil para nosotros. fuente


174
2018-03-18 09:17



Más información de la que te gustaría saber:

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


ACTUALIZAR

Solo estoy elaborando lo que Paul agregó en el comentario. los página mencionada anteriormente está muerto después de 2010, así que lea con una pizca de sal. Muchas cosas han sido cambiadas en 3 años.

History of Wiki Page


83
2018-04-08 20:46



Realmente depende de tu caso de uso.

Comparar 0MQ con ActiveMQ o RabbitMQ no es justo. ActiveMQ y RabbitMQ son sistemas de mensajería que requieren instalación y administración. Ofrecen características mucho más que ZeroMQ. Tienen colas persistentes reales, soporte para transacciones, etc.

ZeroMQ es una implementación ligera de socket orientado a mensajes. También es adecuado para la programación asíncrona en proceso. Es posible ejecutar un "Sistema de mensajería empresarial" sobre ZeroMQ, pero tendría que implementar mucho por su cuenta.

Asi que:

ActiveMQ, RabbitMQ, Websphere MQ y MSMQ son "Enterprise Message Queues"

ZeroMQ es una biblioteca de IPC orientada a mensajes.


71
2018-02-02 19:06



Hay una comparación entre RabbitMQ y ActiveMQ aquí. De forma predeterminada, ActiveMQ está configurado para garantizar la entrega de mensajes, lo que puede dar la impresión de que es lento en comparación con los sistemas de mensajería menos confiables. Siempre puede cambiar la configuración de rendimiento si lo desea y obtener al menos el mismo rendimiento que cualquier otro sistema de mensajería. Al menos tienes esa opción. Hay mucha información en los foros y las preguntas frecuentes de ActiveMQ para la configuración de escalado, rendimiento y alta disponibilidad. Además, ActiveMQ admitirá AMQP 1.0 cuando se finalice la especificación, junto con otros formatos de conexión, como STOMP.

Otra ventaja para ActiveMQ es su proyecto Apache, por lo que existe diversidad en la comunidad de desarrolladores, y no está vinculada a una compañía.


34
2017-10-20 17:26



No he usado ActiveMQ o RabbitMQ pero he usado ZeroMQ. La gran diferencia, tal como la veo entre ZeroMQ y ActiveMQ, etc., es que 0MQ no tiene intermediario y no tiene confiabilidad incorporada para la entrega de mensajes. Si está buscando una API de mensajería fácil de usar que admita muchos patrones de mensajería, transportes, plataformas y enlaces de idiomas, vale la pena echarle un vistazo a 0MQ. Si está buscando una plataforma de mensajería completa, entonces 0MQ puede no ajustarse a la factura.

Ver www.zeromq.org/docs:cookbook para muchos ejemplos de cómo se puede usar 0MQ.

Utilicé con éxito 0MQ para el envío de mensajes en una aplicación de monitoreo de uso de electricidad (ver http://rwscott.co.uk/2010/06/14/currentcost-envi-cc128-part-1/)


22
2017-08-24 07:28



Estoy usando zeroMQ. Quería un sistema simple de envío de mensajes y no necesito la complicación de un intermediario. Tampoco quiero un gran sistema empresarial orientado a Java.

Si desea un sistema rápido y simple, y necesita admitir varios idiomas (uso C y .net), le recomiendo mirar 0MQ.


14
2017-07-28 16:18



Solo puedo agregar mis 2 centavos sobre ActiveMQ pero dado que este es uno de los más populares:

El idioma en el que desea escribir podría ser importante. Aunque ActiveMQ tiene un cliente para la mayoría, su implementación de C # está lejos de ser completa en comparación con la Biblioteca de Java.

Esto significa que algunas funcionalidades básicas son escamosas (protocolo de conmutación por error que ... bueno ... falla en algunos casos, sin soporte de reenvío) y otras simplemente no están allí. Dado que .NET no parece ser tan importante para el proyecto, el desarrollo es bastante lento y no parece haber ningún plan de lanzamiento. El tronco a menudo se rompe, por lo que si lo considera, es posible que desee considerar la posibilidad de contribuir al proyecto si desea que las cosas sigan adelante.

Luego está ActiveMQ, que tiene muchas características interesantes, pero también problemas muy extraños. Utilizamos la versión Fuse (Progress) de activemq por razones de estabilidad, pero incluso así hay un par de "bugs" extraños que desea tener en cuenta:

  • Corredores que dejan de enviar mensajes en algunas ocasiones
  • Errores de diario que hacen que la cola muestre mensajes que ya no están allí (no se entregan al consumidor, pero aún así)
  • La prioridad aún no está implementada (está en la lista de Problemas desde el comienzo de la especie humana)
  • etcétera etcétera.

En general, es un producto bastante agradable SI puedes vivir con sus problemas:

A) no tienen miedo de involucrarse activamente cuando usan .NET
  B) desarrollar en java ;-)


10
2017-10-29 09:47



¡ZeroMQ realmente no tiene colas! ¡Es realmente un error! ¡No tiene colas, temas, persistencia, nada! Es solo un middleware para sockets API. Si es lo que te ves genial! de lo contrario, olvídalo! no es como activeMQ o rabbitmq.


8
2017-08-19 14:49



Existe una comparación de las características y el rendimiento de RabbitMQ ActiveMQ y QPID en
http://bhavin.directi.com/rabbitmq-vs-apache-activemq-vs-apache-qpid/

Personalmente, he probado todos los tres anteriores. RabbitMQ es el mejor en cuanto a rendimiento según yo, pero no tiene opciones de conmutación por error y recuperación. ActiveMQ tiene la mayoría de las características, pero es más lento.

Actualización: HornetQ también es una opción que puede examinar, es JMS Queja, una mejor opción que ActiveMQ si está buscando una solución basada en JMS.


8
2017-08-23 11:05