¿Qué es el Protocolo avanzado de cola de mensajes (AMQP)?

Marzo 27, 2024

El protocolo avanzado de cola de mensajes (AMQP) es un protocolo de capa de aplicación estándar abierto para aplicaciones orientadas a mensajes. middleware, centrándose en colas de mensajes, enrutamiento (punto a punto y publicación y suscripción), confiabilidad y seguridad.

A diferencia de los sistemas de mensajería propietarios, AMQP es un protocolo abierto y estandarizado que permite la interoperabilidad entre sistemas y aplicaciones. Permite que las aplicaciones se comuniquen y envíen mensajes entre sí de forma confiable y escalable, independientemente de su plataforma, arquitectura o idioma subyacente. Esta capacidad lo convierte en una herramienta esencial para construir sistemas distribuidos complejos o integrar entornos heterogéneos.

AMQP opera en una arquitectura basada en intermediarios, donde el intermediario de mensajería actúa como intermediario que recibe mensajes de los productores (enviando aplicaciones) y enruta estos mensajes a los consumidores apropiados (aplicaciones receptoras). Este modelo desacopla al productor y al consumidor, permitiéndoles operar de forma independiente.

El protocolo define un conjunto de componentes como colas de mensajes, intercambios y enlaces que ayudan en la flexible enrutamiento y entrega de mensajes. Además, AMQP especifica tanto el comportamiento del agente de mensajería y el protocolo de mensajería en sí, lo que garantiza una entrega confiable de mensajes a través de funciones como reconocimiento de mensajes, colas duraderas y persistencia de mensajes.

Una breve historia de AMQP

AMQP surgió de la necesidad de un protocolo estandarizado, abierto e interoperable para el middleware de mensajería. Su desarrollo comenzó en 2003, cuando John O'Hara de JPMorgan Chase en Londres reconoció las limitaciones y los costos de utilizar sistemas de mensajería propietarios para la integración de aplicaciones. El objetivo era crear un protocolo para facilitar la comunicación orientada a mensajes a través de diferentes plataformas y tecnologías, reduciendo la dependencia de proveedores específicos y sistemas propietarios. La primera versión oficial de AMQP, AMQP 0-9-1, se lanzó en 2006.

El lanzamiento de AMQP 1.0 en octubre de 2011 marcó un hito importante. AMQP 1.0 introdujo cambios importantes, haciendo que el protocolo sea más flexible e interoperable mediante la definición de un protocolo binario a nivel de cable independiente del idioma que se puede implementar en cualquier plataforma. Esta versión de AMQP recibió un amplio apoyo de la industria y fue ratificada como estándar internacional por la Organización Internacional de Normalización (ISO) y la Comisión Electrotécnica Internacional (IEC) en 2014 como ISO/IEC 19464.

Desde entonces, AMQP se ha adoptado globalmente para diversas aplicaciones, desde servicios financieros hasta IoT (Internet de las cosas) y cloud informática.

¿Cómo funciona AMQP?

AMQP (Protocolo avanzado de cola de mensajes) opera a través de un marco meticulosamente diseñado que organiza el flujo de mensajes entre productores y consumidores de una manera confiable, segura y eficiente.

En esencia, el protocolo emplea una arquitectura basada en intermediarios que actúa como intermediario y gestiona las rutas de comunicación dentro del sistema de mensajería. Los productores envían mensajes al intermediario, especificando no sólo el contenido sino también los mensajes críticos. metadatos, como claves de enrutamiento y prioridades de mensajes. Este intermediario asume entonces la responsabilidad de procesar estos mensajes, determinando sus destinos adecuados en función de la lógica de enrutamiento establecida.

El enrutamiento de mensajes dentro de AMQP se ve facilitado por los intercambios, que clasifican los mensajes y los dirigen a las colas correctas según reglas predefinidas y el tipo de intercambio utilizado. Esta configuración permite una variedad de patrones de mensajería, desde mensajes simples punto a punto hasta modelos de publicación-suscripción más complejos. Las colas almacenan temporalmente los mensajes, lo que garantiza que se mantengan de forma segura hasta que un consumidor esté listo para procesarlos. Al recibir un mensaje, los consumidores pueden acusar recibo de su procesamiento, indicando al intermediario que elimine el mensaje de la cola, manteniendo así la integridad y el orden de la entrega del mensaje.

Esta interacción sofisticada entre los componentes de AMQP garantiza que los mensajes no sólo se entreguen de manera eficiente sino también con un alto grado de confiabilidad y seguridad. El protocolo admite funciones avanzadas como reconocimiento de mensajes, transacciones y mensajería duradera, que son esenciales para aplicaciones que requieren entrega de mensajes garantizada y la capacidad de recuperarse de fallas del sistema. Además, los mecanismos de seguridad de AMQP, incluido SASL para autenticación y TLS para cifrar datos en tránsito.

Componentes AMQP

AMQP facilita mensajes complejos a través de un conjunto de componentes centrales que interactúan de manera estructurada. Estos componentes son fundamentales para la arquitectura AMQP y le permiten admitir una amplia variedad de patrones de mensajería. Aquí hay una lista y explicación de estos componentes clave:

  • Broker. El corredor actúa como intermediario entre los productores de mensajes (remitentes) y los consumidores (receptores). Es responsable de recibir mensajes de los productores, enrutarlos adecuadamente y entregarlos a los consumidores previstos. El corredor garantiza que los mensajes se almacenen, administren y reenvíen de manera eficiente, brindando confiabilidad y escalabilidad al sistema de mensajería.
  • Productor. El productor, también conocido como editor, es una aplicación o servicio que envía mensajes. Los productores crean mensajes y los envían a un intercambio dentro del corredor, a menudo sin conocer a los consumidores específicos que recibirán los mensajes. Esto desacopla las partes emisoras y receptoras del sistema, mejorando flexibilidad y escalabilidad.
  • Consumidor. Un consumidor es una aplicación o servicio que recibe mensajes. Los consumidores se suscriben a una cola dentro del corredor y procesan los mensajes a medida que llegan. Los consumidores pueden reconocer los mensajes una vez procesados, lo que informa al intermediario que el mensaje se puede eliminar de la cola de forma segura.
  • Intercambiar. Los intercambios son entidades AMQP donde los productores envían mensajes. Un intercambio recibe y enruta mensajes a una o más colas según la clave de enrutamiento, el tipo de intercambio y los enlaces del mensaje. Los intercambios desacoplan a los productores de las colas, lo que permite una lógica de enrutamiento más compleja. Hay varios tipos de intercambios, que incluyen:
    • Intercambio directo. Enruta mensajes a colas según una clave de enrutamiento coincidente.
    • Intercambio de fans. Transmite mensajes a todas las colas vinculadas sin considerar las claves de enrutamiento.
    • Intercambio de temas. Enruta mensajes a colas según coincidencias de comodines entre la clave de enrutamiento y el patrón de enrutamiento especificado en el enlace.
    • Intercambio de encabezados. Enruta los mensajes basándose en valores de encabezado coincidentes en lugar de claves de enrutamiento.
  • Cola. Una cola es un búfer que almacena mensajes hasta que un consumidor pueda procesarlos de forma segura. Las colas garantizan que los mensajes se entreguen a los consumidores por orden de llegada, aunque se pueden establecer prioridades. Los consumidores se suscriben a colas para recibir mensajes.
  • Vinculante. Los enlaces son reglas que vinculan colas a intercambios. Un enlace puede incluir una clave o patrón de enrutamiento que dicta cómo se deben enrutar los mensajes desde el intercambio a la cola. Los enlaces determinan la relación entre los intercambios y las colas, controlando cómo se filtran y enrutan los mensajes dentro del intermediario.
  • Clave de enrutamiento. Una clave de enrutamiento es una etiqueta o identificador que los productores adjuntan a los mensajes cuando se envían a un intercambio. El intercambio utiliza el valor de la clave de enrutamiento, junto con las configuraciones de enlace, para determinar qué colas deben recibir el mensaje.
  • Mensaje. El mensaje son los datos transportados entre el productor y el consumidor. Consiste en una carga útil (los datos reales que se transmitirán) y encabezados o propiedades (metadatos sobre el mensaje, como su tipo, prioridad y modo de entrega).
  • Canal. Un canal es una conexión virtual dentro de una conexión de red física. Los canales ayudan a multiplexar la conexión de red entre el cliente AMQP (productor/consumidor) y el corredor para una comunicación más eficiente.
  • Host virtual (vHost). Un host virtual proporciona una forma de segregar aplicaciones utilizando el mismo intermediario AMQP. Cada host virtual puede tener su propio conjunto independiente de intercambios, colas y enlaces.

Casos de uso de AMQP

AMQP es un protocolo de mensajería versátil que admite una amplia gama de casos de uso en diversas industrias y aplicaciones. Su sólido conjunto de funciones, que incluye colas de mensajes, enrutamiento, confiabilidad y seguridad, lo hace ideal para sistemas complejos, distribuidos y escalables. A continuación se muestran algunos casos de uso clave para AMQP:

  • Integración de aplicaciones empresariales. AMQP permite aplicaciones empresariales, sistemas y bases de datos comunicar e intercambiar datos de forma fiable y segura. Esto es particularmente útil en entornos heterogéneos donde las aplicaciones se crean en diferentes plataformas y tecnologías que necesitan funcionar juntas sin problemas.
  • Sistemas desacoplados. In arquitecturas de microservicios o al implementar arquitecturas orientadas a servicios (SOA), AMQP permite que los servicios se comuniquen sin estar estrechamente acoplados entre sí. Este desacoplamiento mejora la escalabilidad y la resiliencia del sistema, ya que los servicios se pueden desarrollar, implementar y escalar de forma independiente.
  • Procesamiento de datos en tiempo real. AMQP se utiliza en escenarios que requieren datos en tiempo real procesamiento, como el análisis de transmisión, donde los datos deben recopilarse, procesarse y analizarse de inmediato. El protocolo garantiza la entrega confiable de mensajes, incluso durante fallas de la red o retrasos en el procesamiento.
  • Balanceo de carga. AMQP puede distribuir tareas o cargas de trabajo entre múltiples procesos o servicios de trabajo, ayudando a equilibrar la carga y mejorar la eficiencia general y la capacidad de respuesta del sistema. Esta característica es particularmente útil en cloud entornos informáticos y distribuidos con cargas de trabajo impredecibles.
  • Comunicación asíncrona. AMQP admite patrones de comunicación asincrónicos, lo que permite que las aplicaciones envíen y reciban mensajes sin bloquear operaciones. Este tipo de comunicación es crucial para aplicaciones que requieren alto rendimiento y baja latencia, ya que les permite seguir respondiendo mientras esperan mensajes.
  • Internet de las cosas (IoT). En aplicaciones de IoT, AMQP se utiliza para recopilar datos de varios sensores y dispositivos y transmitirlos a sistemas de procesamiento o cloud servicios. Su capacidad para operar en redes restringidas y su mensajería segura y confiable lo convierten en una excelente opción para escenarios de IoT.
  • Servicios financieros. AMQP se utiliza en la industria financiera para el procesamiento de transacciones, sistemas comerciales en tiempo real y procesamiento de pagos. Su confiabilidad y soporte para mensajería transaccional garantizan la integridad y coherencia de las transacciones financieras.
  • Notificaciones y alertas. AMQP se puede utilizar para implementar sistemas de notificación, donde se envían alertas, notificaciones o correos electrónicos a usuarios o sistemas en respuesta a eventos o condiciones específicas. Su mensajería confiable garantiza que las notificaciones se entreguen incluso si el destinatario no está disponible temporalmente.
  • Cuidado de la salud. En el sector sanitario, AMQP permite una comunicación segura y fiable entre diferentes sistemas, como registros de pacientes, facturación y equipos de diagnóstico. Garantiza que los datos confidenciales se transmitan y procesen de forma segura de conformidad con las regulaciones.

AMQP frente a MQTT

AMQP y MQTT (Message Queuing Telemetry Transport) son protocolos diseñados para middleware orientado a mensajes, pero sirven para diferentes propósitos y están optimizados para diferentes casos de uso.

AMQP es un protocolo con más funciones que proporciona una amplia gama de funciones de mensajería, incluidas colas de mensajes, enrutamiento, gestión de transacciones y seguridad. Su modelo es inherentemente más complejo y flexible, ofreciendo solidez para sistemas que necesitan un control preciso sobre los comportamientos de mensajería y las integraciones en diversas plataformas.

Por otro lado, MQTT está diseñado para ser simple y liviano. Este protocolo sigue un patrón de publicación-suscripción, sobresaliendo en escenarios que requieren paquetes de datos mínimos y una distribución eficiente de mensajes a múltiples consumidores. MQTT se caracteriza por su bajo consumo de energía y su facilidad de implementación en dispositivos con capacidades de procesamiento limitadas, lo que lo hace ideal para mensajería en tiempo real en ecosistemas de IoT.

Aquí hay una descripción general de estas comparaciones:

Punto de comparaciónAMQPMQTT
Objetivo de diseñoDiseñado para patrones de mensajería complejos e integración empresarial.Diseñado para mensajería ligera, principalmente en escenarios de IoT.
Sobrecarga de protocoloMás alto debido a un conjunto de funciones más completo.Inferior, optimizado para un uso mínimo de ancho de banda.
Modelo de mensajeríaAdmite modelos punto a punto y de publicación-suscripción, junto con enrutamiento avanzado, transacciones y colas de mensajes.Utiliza principalmente un modelo de publicación-suscripción, con menos enfoque en el enrutamiento de mensajes.
Calidad de Servicio (QoS)Proporciona varios niveles de garantías de entrega de mensajes, incluida la entrega como máximo una vez, al menos una vez y exactamente una vez.Ofrece tres niveles de QoS: 0 (como máximo una vez), 1 (al menos una vez) y 2 (exactamente una vez).
Casos de usoIdeal para la integración de aplicaciones empresariales, procesos comerciales complejos y situaciones que requieren entrega de mensajes y soporte de transacciones confiables.Ideal para conectar dispositivos IoT, especialmente en entornos con ancho de banda y potencia limitados.
Flexibilidad y complejidadMás complejo debido a una amplia gama de características, que requieren más conocimientos para implementarlo de manera efectiva.Más simple y directo, lo que facilita su implementación en entornos restringidos.
SeguridadProporciona funciones de seguridad integrales, que incluyen autenticación y cifrado.Admite mecanismos de seguridad básicos, pero a menudo depende de la seguridad de la red subyacente.
InteroperabilidadDiseñado para permitir la interoperabilidad entre diferentes sistemas y proveedores, lo que lo hace adecuado para entornos empresariales con diversas tecnologías.Enfocado en la interoperabilidad en el contexto de dispositivos y plataformas IoT.

Anastasia
Spasojevic
Anastazija es una escritora de contenido experimentada con conocimiento y pasión por cloud informática, tecnología de la información y seguridad en línea. En phoenixNAP, se centra en responder preguntas candentes sobre cómo garantizar la solidez y seguridad de los datos para todos los participantes en el panorama digital.