Nos interesaría escuchar cualquier experiencia con los pros y los contras de ActiveMQ vs RabbitMQ vs ZeroMQ. La información sobre cualquier otra cola de mensajes interesante también es bienvenida.
Nos interesaría escuchar cualquier experiencia con los pros y los contras de ActiveMQ vs RabbitMQ vs ZeroMQ. La información sobre cualquier otra cola de mensajes interesante también es bienvenida.
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 enfoques diferentes 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 los escenarios avanzados como enrutamiento, equilibrio de carga o colas de mensajes persistentes 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 mensajes 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 puede encontrar en el mundo financiero. Zmq admite muchos escenarios de mensajería avanzada, pero a diferencia de 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á que estudiar las 80 páginas más o menos de la guía (que recomiendo leer para cualquiera que escriba un 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 término medio. Al igual que Zmq, se puede implementar con topologías de broker y P2P. Al igual que RabbitMQ, es más fácil implementar escenarios avanzados, pero generalmente a costa del rendimiento bruto. Es la navaja suiza de mensajería :-).
Finalmente, los 3 productos:
¿Por qué extrañaste Sparrow , Starling , Kestrel , Amazon SQS , Beanstalkd , Kafka , IronMQ ?
Servidores de cola de mensajes
Los servidores de cola de mensajes están disponibles en varios idiomas, Erlang (RabbitMQ), C (beanstalkd), Ruby (Starling o Sparrow), Scala (Kestrel, Kafka) o Java (ActiveMQ). Una breve descripción se puede encontrar aquí
Gorrión
Estornino
Cernícalo
RabbitMQ
Apache ActiveMQ
Beanstalkd
Amazon SQS
Kafka
ZMQ
EagleMQ
IronMQ
Espero que esto sea útil para nosotros. fuente
Más información de la que quisiera saber:
http://wiki.secondlife.com/wiki/Message_Queue_Evaluation_Notes
Simplemente elaborando lo que Paul agregó en el comentario. La página mencionada anteriormente está muerta después de 2010, así que lea con una pizca de sal. Se han cambiado muchas cosas en 3 años.
Realmente depende de su 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 además mucho más que ZeroMQ. Tienen colas persistentes reales, soporte para transacciones, etc.
ZeroMQ es una implementación de socket orientada a mensajes livianos. También es adecuado para la programación asincrónica en proceso. Es posible ejecutar un "Sistema de mensajería empresarial" sobre ZeroMQ, pero tendría que implementar mucho por su cuenta.
Entonces:
ActiveMQ, RabbitMQ, Websphere MQ y MSMQ son "colas de mensajes empresariales"
ZeroMQ es una biblioteca de IPC orientada a mensajes.
Hay una comparación entre RabbitMQ y ActiveMQ aquí . Fuera de la caja, ActiveMQ está configurado para garantizar la entrega de mensajes, lo que puede dar la impresión de ser lento en comparación con los sistemas de mensajería menos confiables. Siempre puede cambiar la configuración del 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 en 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 cable, como STOMP.
Otra ventaja para ActiveMQ es su proyecto Apache, por lo que hay diversidad en la comunidad de desarrolladores, y no está vinculada a una sola compañía.
No he usado ActiveMQ o RabbitMQ pero he usado ZeroMQ. La gran diferencia, según lo veo, entre ZeroMQ y ActiveMQ, etc. es que 0MQ no tiene intermediario y no tiene una confiabilidad integrada 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, definitivamente vale la pena echar un vistazo a 0MQ. Si está buscando una plataforma de mensajería completa, entonces 0MQ puede no cumplir con los requisitos.
Consulte www.zeromq.org/docs:cookbook para ver muchos ejemplos de cómo se puede usar 0MQ.
Utilicé con éxito 0MQ para pasar mensajes en una aplicación de monitoreo de uso de electricidad (consulte http://rwscott.co.uk/2010/06/14/currentcost-envi-cc128-part-1/ )
Estoy usando zeroMQ. Quería un sistema simple para pasar mensajes y no necesito la complicación de un corredor. Tampoco quiero un gran sistema empresarial orientado a Java.
Si desea un sistema rápido y simple y necesita admitir múltiples lenguajes (uso C y .net), le recomiendo mirar 0MQ.
Solo puedo agregar mis 2 centavos sobre ActiveMQ, pero como este es uno de los más populares:
El idioma en el que desea escribir puede 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 Java.
Esto significa que algunas funcionalidades básicas son escamosas (protocolo de conmutación por error que ... bueno ... falla en algunos casos, no hay 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 está roto, por lo que si considera esto, puede considerar contribuir al proyecto si desea que las cosas sigan adelante.
Luego está ActiveMQ en sí, que tiene muchas características agradables, pero también algunos problemas muy extraños. Usamos la versión Fuse (Progress) de activemq por razones de estabilidad, pero incluso entonces hay un par de "errores" extraños que debes tener en cuenta:
En general, es un producto bastante bueno SI puedes vivir con sus problemas:
A) no tienen miedo de involucrarse activamente cuando se utiliza .NET
B) desarrollar en Java ;-)
Hay 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 rendimiento en mi opinión, pero no tiene opciones de recuperación y conmutación por error. 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 considerar, es JMS Complaint, una mejor opción que ActiveMQ si está buscando una solución basada en JMS.
Escribí sobre mi experiencia inicial con respecto a AMQP, Qpid y ZeroMQ aquí: http://ron.shoutboot.com/2010/09/25/is-ampq-for-you/
Mi opinión subjetiva es que AMQP está bien si realmente necesita las instalaciones de mensajería persistente y no le preocupa demasiado que el corredor pueda ser un cuello de botella. Además, el cliente C ++ no se encuentra actualmente en AMQP (Qpid no ganó mi soporte; sin embargo, no estoy seguro sobre el cliente ActiveMQ), pero tal vez esté en progreso. ZeroMQ puede ser el camino de otra manera.
He usado ActiveMQ en un entorno de producción durante aproximadamente 3 años. Mientras se hace el trabajo, alinear versiones de las bibliotecas del cliente que funcionan correctamente y están libres de errores puede ser un problema. Actualmente estamos buscando la transición a RabbitMQ.
Hay una discusión en los comentarios de esta publicación del blog , sobre Twitter escribiendo su propia cola de mensajes, lo que puede ser interesante.
Steve realizó extensas pruebas de carga y estrés de ActiveMQ, RabbitMQ, etc. ActiveMQ es bastante lento (mucho más lento que Kestrel), RabbitMQ se cuelga constantemente con demasiados productores y muy pocos consumidores.
Sin embargo, probablemente no tendrá una carga similar a Twitter inicialmente :)
Pocas aplicaciones tienen tantas configuraciones de ajuste como ActiveMQ. Algunas características que hacen que ActiveMQ se destaque son:
Tamaño de captación previa configurable. Roscado configurable. Conmutación por error configurable. Notificación administrativa configurable a productores. ... detalles en:
Abie, todo se reduce a tu caso de uso. En lugar de confiar en la cuenta de otra persona sobre su caso de uso, siéntase libre de publicar su caso de uso en la lista de discusión de rabbitmq. Preguntar en Twitter también te dará algunas respuestas. Mis mejores deseos, alexis
Acerca de ZeroMQ, también conocido como 0MQ, como ya sabrá, es el que le dará la mayor cantidad de mensajes por segundo (la última vez que verifiqué 4 millones por segundo en su servidor de referencia), pero como ya sabrá, el La documentación es inexistente. Te resultará difícil encontrar cómo iniciar los servidores, y mucho menos cómo usarlos. Supongo que eso es en parte por qué nadie contribuyó con 0MQ todavía.
¡Que te diviertas!
Si también está interesado en implementaciones comerciales, debería echar un vistazo a Nirvana desde my-channel .
Nirvana se utiliza en gran medida dentro de la industria de servicios financieros para el comercio a gran escala de baja latencia y plataformas de distribución de precios.
Existe soporte para una amplia gama de lenguajes de programación de clientes en todos los dominios empresariales, web y móviles.
Las capacidades de agrupamiento son extremadamente avanzadas y merecen una mirada si la HA transparente o el equilibrio de carga son importantes para usted.
Nirvana se puede descargar gratis con fines de desarrollo.