ActiveMQ o RabbitMQ o ZeroMQ o [cerrado]

Resuelto Abie asked hace 15 años • 0 respuestas

Nos interesaría escuchar cualquier experiencia sobre los pros y los contras de ActiveMQ, RabbitMQ y ZeroMQ. También es bienvenida información sobre otras colas de mensajes interesantes.

Abie avatar Apr 09 '09 01:04 Abie
Aceptado

Editar: Mi respuesta inicial se centró fuertemente 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 colas de mensajes persistentes se admiten en 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 los mensajes son bastante grandes.

ZeroMq es un sistema de mensajería muy liviano especialmente diseñado para escenarios de alto rendimiento y baja latencia como el que se 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 partes del marco (por ejemplo, sockets y dispositivos). Zmq es muy flexible pero tendrás que estudiar las 80 páginas aproximadamente de la guía (que recomiendo leer a cualquiera que escriba sistemas distribuidos, incluso si no usas 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 intermediario 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 la mensajería :-).

Finalmente, los 3 productos:

  • disponer de apis de cliente para los lenguajes más comunes (C++, Java, .Net, Python, Php, Ruby,…)
  • tener documentación sólida
  • son apoyados activamente
Julien avatar Nov 06 '2009 13:11 Julien

¿Por qué extrañaste a 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). Puede encontrar una breve descripción aquí

Gorrión

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

Estornino

  • escrito por Blaine Cook en Twitter
  • Starling es un servidor de cola de mensajes basado en MemCached
  • escrito en rubí
  • almacena trabajos en la memoria (cola de mensajes)
  • documentación: algunos buenos tutoriales, por ejemplo el Railscast sobre Starling y Workling o esta publicación de blog sobre Starling

Cernícalo

  • escrito por Robey Pointer
  • Clon de Starling escrito en Scala (una adaptación de Starling de Ruby a Scala)
  • Las colas se almacenan en la memoria, pero se registran en el disco.

ConejoMQ

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

Apache ActiveMQ

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

habichuelas

  • escrito por Philotic, Inc. para mejorar el tiempo de respuesta de una aplicación de Facebook
  • servicio de cola de trabajo en memoria escrito principalmente en C
  • Documento: http://nubyonrails.com/articles/about-this-blog-beanstalk-messaging-queue

AmazonSQS

  • Servicio de cola simple de Amazon

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 usar persistencia, usa caché de disco del sistema operativo para datos activos (tiene un rendimiento mayor que cualquiera de los anteriores con la persistencia habilitada)
  • Admite procesamiento tanto en línea como fuera de línea

ZMQ

  • La biblioteca de sockets que actúa como marco de concurrencia
  • Más rápido que TCP, para productos agrupados y supercomputación
  • Transporta mensajes a través de inproc, IPC, TCP y multidifusión.
  • Conecte N-to-N a través de fanout, pubsub, canalización, solicitud-respuesta
  • E/S asíncrona para aplicaciones escalables de paso de mensajes multinúcleo

ÁguilaMQ

  • EagleMQ es un administrador de colas liviano, de alto rendimiento y de código abierto.
  • Escrito en C
  • Almacena todos los datos en la memoria y admite la persistencia.
  • Tiene su propio protocolo. Soporta trabajo con colas, rutas y canales.

HierroMQ

  • HierroMQ
  • Escrito en Go
  • Servicio de colas totalmente gestionado
  • Disponible tanto como versión en la nube como local

Espero que esto nos sea útil. fuente

Andrei Andrushkevich avatar Mar 18 '2011 09:03 Andrei Andrushkevich

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

http://wiki. secondlife.com/wiki/Message_Queue_Evaluación_Notes


ACTUALIZAR

Simplemente elaborando lo que Paul agregó en el comentario. La página mencionada anteriormente dejó de funcionar después de 2010, así que léala con cautela. Se han cambiado muchas cosas en 3 años.

Historia de la página Wiki

FlySwat avatar Apr 08 '2009 20:04 FlySwat

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 muchas más funciones que ZeroMQ. Tienen colas realmente persistentes, soporte para transacciones, etc.

ZeroMQ es una implementación de socket ligera orientada a mensajes. También es adecuado para programación asincrónica en proceso. Es posible ejecutar un "Sistema de mensajería empresarial" sobre ZeroMQ, pero tendría que implementar muchas cosas por su cuenta.

Entonces:

ActiveMQ, RabbitMQ, Websphere MQ y MSMQ son "colas de mensajes empresariales"

ZeroMQ es una biblioteca IPC orientada a mensajes.

sanosdole avatar Feb 02 '2011 19:02 sanosdole

Aquí hay una comparación entre RabbitMQ y ActiveMQ . De fábrica, ActiveMQ está configurado para garantizar la entrega de mensajes, lo que puede dar la impresión de que es lento en comparación con sistemas de mensajería menos confiables. Siempre puedes cambiar la configuración de rendimiento si lo deseas y obtener al menos un rendimiento tan bueno como 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 escalamiento, 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 de ActiveMQ es que es un proyecto Apache, por lo que hay diversidad en la comunidad de desarrolladores y no está ligada a una sola empresa.

Rob Davies avatar Oct 20 '2009 17:10 Rob Davies