Eligiendo protocolo de mensajería: AMQP, MQTT o STOMP

Seguro que en algún momento habéis necesitado elegir un protocolo de mensajería multilenguaje y os habéis encontrado con la duda de cuál elegir. Podríamos añadir más zomo ZeroMQ u OpenWire pero será otro día 😉

Ya hemos hablado de estos 3 protocolos sobre TCP/IO en el Blog, entre estos posts:

 

AMQP (Advanced Message Queuing Protocol) fue diseñado como una alternativa abierta para middleware de mensajería propietarios:

  • AMQP es un protocolo binario que destaca por su interoperabilidad y fiabilidad
  • Ofrece un amplio conjunto de funcionalidades como colas fiables basadas en mensajería P/S, enrutamiento flexible, seguridad, además de permitir un control en profundidad de colas, cabeceras,…
  • Hay brokers comerciales y open source y clientes interoperables para prácticamente todos los lenguajes
  • AMQP se usa en empresas como JP Morgan para procesar 1 billón de mensajes al día, la NASA lo utiliza para Nebula Cloud Computing, Google lo utiliza para el procesamiento de eventos complejos entre otros ejemplos

 

MQTT (Message Queue Telemetry Transport) fue desarrollo inicialmente por IBM:

  • En los dos últimos años se ha movido a la comunidad opensource, creciendo en popularidad en aplicaciones móviles
  • Se diseñó como protocolo simple diseñado para dispositivos con pocos recursos (como un Arduino), bajo ancho de banda y redes de alta latencia
  • Es un protocol binario que usa mensajería Publish-Suscribe
  • Como ventajas sobre mensajerías empresariales es bajo footprint lo que lo hace ideal para aplicaciones estilo IoT
  • Los brokers MQTT soportan varios miles de conexiones concurrentes de dispositivos
  • Ofrece 3 calidades de servicio: 1) fire-and-forget (no confinable) ,2) “at least once” que asegura que mensaje se envoi al menos 1 vez y 3) “exactly once”.

STOMP (Simple/Streaming Text Oriented Messaging Protocol):

  • Es un protocol textual, análogo a HTTP
  • Provee cabeceras y body en el mensaje
  • Se diseñó para ser un protocolo simple y ligero, además ofrece bindings para un amplio rango de lenguajes
  • Más en stomp.github.com.

Por suerte existen varios brokers que soportan estos 3 protocolos (además del imprescindible JMS para los Javeros :)) como RabbitMQ, ActiveMQ, Apollo,… por lo que podemos elegir el protocolo en base a las necesidades/requisitos que tengamos para nuestra aplicación y luego centrarnos en el rendimiento a la hora de elegir el Broker más adecuado, existen varios benchmarks más o menos objetivos, más o menos fiables, a mí me gusta este:

http://x-aeon.com/wp/2013/04/10/a-quick-message-queue-benchmark-activemq-rabbitmq-hornetq-qpid-apollo/

Una respuesta to “Eligiendo protocolo de mensajería: AMQP, MQTT o STOMP”


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: