source open kafka brokers jms activemq message-queue apache-kafka apollo

jms - open - ActiveMQ vs Apollo vs Kafka



rabbitmq vs kafka (4)

No tengo ninguna experiencia previa con * MQ y estoy buscando desarrollar conocimientos sobre JMS y colas de mensajes en general. De esa forma, me pregunto si debería comenzar con ActiveMQ o simplemente "ignorarlo" y comenzar enseñándome a mí mismo Apollo. ¿Apollo es tan completo como ActiveMQ? ¿Implementa JMS 2.0 (veo que ActiveMQ se atascó con 1.1)? ¿Me perderé algo realmente importante?

Además, ¿cómo se compara Kafka con estas dos soluciones?


Apache ActiveMQ es un gran caballo de batalla lleno de características y cosas buenas. No es el software MQ más rápido, pero es lo suficientemente rápido para la mayoría de los casos de uso. Entre las características se incluyen clustring flexible, conmutación por error, integraciones con diferentes servidores de aplicaciones, seguridad, etc.

Apache Apollo es un intento de escribir un nuevo núcleo para ActiveMQ para hacer frente a una gran cantidad de clientes y mensajes. No tiene todas las características agradables y convenientes de ActiveMQ, pero se escala mucho mejor. Apache Apollo es una implementación MQ realmente rápida cuando se le da un gran servidor multinúcleo y miles de conexiones simultáneas. Tiene una interfaz de usuario simple y agradable, pero no es una solución de "talla única".

Parece que hay un intento continuo de fusionar una serie de características de ActiveMQ con HornetQ bajo el nombre de ActiveMQ Artemis. HornetQ tiene soporte para JMS2.0, por lo que mi humilde suposición es que es probable que aparezca en ActiveMQ 6.x.

JIRA , Github

Kafka es una bestia diferente. Es un agente de mensajes muy simple destinado a escalar la suscripción de publicación persistente (temas) lo más rápido posible en múltiples servidores. Para implementaciones de tamaño pequeño a mediano, Kafka probablemente no sea la mejor opción. También tiene su manera de hacer cosas para lograr el alto rendimiento, por lo que debe comerciar mucho en términos de flexibilidad para obtener un alto rendimiento distribuido. Si eres nuevo en el área de MQ y corredores, supongo que Kafka es exagerado. Por otro lado, si tienes un clúster de servidores de tamaño decente y te preguntas cómo enviar tantos mensajes como sea posible, ¡dale una vuelta a Kafka!


Esta es una pregunta anterior, pero proporcionaré una respuesta más moderna aquí.

  • El proyecto Apollo está extraoficialmente muerto y sugieren que Artemisa es la nueva moda. ( link ) El desarrollo (aparentemente) estancado de Apollo no me da confianza en el futuro de Artemis.
  • Mi experiencia es similar a la respuesta de Petter en que ActiveMQ es rico en funciones y capaz. Sin embargo, parece que cada versión corrige fallas aleatorias y pérdidas de memoria y esto no inspira confianza. Es estable para mi proyecto (que utiliza la agrupación en clúster), pero hemos visto comportamientos extraños y fallas en el corredor en las últimas doce versiones (actualmente usando 5.14.3)
  • No he usado RabbitMQ (mi proyecto actual está comprometido con ActiveMQ) pero lo probaré en el próximo proyecto que necesite un bus de mensajería. No contar con el fregadero de la cocina de características para soportar significará que es más estable.

EDITAR: La versión 2.3.0 Apache Artemis ocurrió ~ 5 de septiembre de 2017. Por lo tanto, parece estar progresando a partir de ahora. Pero el registro de cambios ( link ) todavía parece demasiado aterrador.



Apache Kafka puede caracterizarse como una "Plataforma de transmisión distribuida" donde, como ActiveMQ , un MOM (middleware orientado a la mensajería) es un "intermediario de mensajes de propósito general" .

Kafka hace una cosa, y una cosa muy bien: en una arquitectura de publicación / suscripción (pub / sub), los mensajes se escriben en temas (registros distribuidos por partición), que los consumidores consumen por compensación. Kafka, que está diseñado para la nube , con un rendimiento muy alto en mente, se enfoca en esto, y en estos días es el medio para la mensajería asincrónica.

ActiveMQ admite semántica de pub / sub y punto a punto . En el último, una cola maneja mensajes individuales entre un único productor y un consumidor específico. Esto, como pub / sub, es asíncrono, pero funciona de manera ligeramente diferente: si un consumidor recibe un mensaje en la cola pero no lo reconoce, el mensaje se envía a otro consumidor. ActiveMQ también admite varios protocolos de mensajería, incluidos AMQP, STOMP, JMS, CAMEL y MQTT.

Si bien Apache Kafka puede ser el medio para una comunicación asincrónica simple; ActiveMQ parece ser preferido por algunos para patrones de enrutamiento más complicados, como los patrones empresariales, sin embargo, muchos argumentan que Kafka es una mejora sobre ActiveMQ, por razones como un mayor rendimiento , una administración más eficiente de particiones para registros / temas, y de grano más fino. ACL para consumidores que consumen un tema.