AMQT

<< Regresar

El Protocolo avanzado de Message Queue Server (AMQP, Advanced Message Queuing Protocol) es un protocolo de capa de aplicación estándar abierta para middleware orientado a mensajes. Las características de AMQP son la orientación del mensaje, la puesta en cola, el enrutamiento (incluido el punto a punto y la publicación y suscripción), la confiabilidad y la seguridad.

AMQP ordena el comportamiento del proveedor de mensajería y el cliente en la medida en que las implementaciones de diferentes proveedores sean interoperables, de la misma manera que SMTP, HTTP, FTP, etc. han creado sistemas interoperables. Las estandarizaciones previas de middleware han ocurrido a nivel de API (por ejemplo, JMS) y se enfocaron en estandarizar la interacción del programador con diferentes implementaciones de middleware, en lugar de proporcionar interoperabilidad entre implementaciones múltiples. A diferencia de JMS, que define una API y un conjunto de comportamientos que debe proporcionar una implementación de mensajería, AMQP es un protocolo de nivel de conexión. Un protocolo de nivel de cable es una descripción del formato de los datos que se envían a través de la red como un flujo de bytes. En consecuencia, cualquier herramienta que pueda crear e interpretar mensajes que se ajusten a este formato de datos puede interoperar con cualquier otra herramienta compatible independientemente del lenguaje de implementación.

Visión general

AMQP es un protocolo binario de capa de aplicación, diseñado para admitir de manera eficiente una amplia variedad de aplicaciones de mensajería y patrones de comunicación. Proporciona comunicación de flujo controlado,  orientada a mensajes con garantías de entrega de mensajes, como por lo menos una vez (donde cada mensaje se entrega una vez o nunca), por lo menos una vez (donde cada mensaje es seguro que se entregará, pero puede hacerlo varias veces) y exactamente una vez (donde el mensaje siempre llegará y lo hará solo una vez), y autenticación y / o cifrado basado en SASL y / o TLS. Asume un protocolo de capa de transporte confiable subyacente como el Protocolo de Control de Transmisión (TCP).

La especificación AMQP se define en varias capas: un sistema de tipo, un protocolo simétrico y asíncrono para la transferencia de mensajes de un proceso a otro, un formato de mensaje extensible estándar y un conjunto de ‘capacidades de mensajería’ estandarizadas pero extensibles.

Descripción de AMQP 1.0

Tipo de sistema

AMQP define un esquema de codificación autodescriptivo que permite la representación interoperable de una amplia gama de tipos de uso común. También permite que los datos escritos se anoten con un significado adicional,  por ejemplo, un valor de cadena particular podría anotarse para que se entienda como una URL. Del mismo modo, un valor de mapa que contiene pares clave-valor para ‘nombre’, ‘dirección’, etc., se puede anotar como una representación de un tipo de ‘cliente’.

El sistema de tipos se utiliza para definir un formato de mensaje que permita que los datos de los metadatos estándar y extendidos sean expresados ​​y comprendidos por las entidades de procesamiento. También se utiliza para definir las primitivas de comunicación a través de las cuales se intercambian los mensajes entre dichas entidades, es decir, los cuerpos de trama AMQP.

Performativas y el protocolo de enlace.

La unidad básica de datos en AMQP es un marco. Hay nueve cuerpos de marco AMQP definidos que se utilizan para iniciar, controlar y demorar la transferencia de mensajes entre dos pares. Estos son:

abierto (la conexión)
comenzar (la sesión)
adjuntar (el enlace)
transferir
fluir
disposición
separar (el enlace)
final (la sesión)
cerca (la conexión)

El protocolo de enlace está en el corazón de AMQP.

Se envía un cuerpo de marco adjunto para iniciar un nuevo enlace; un desprendimiento para romper un enlace. Pueden establecerse enlaces para recibir o enviar mensajes.

Los mensajes se envían a través de un enlace establecido utilizando el marco de transferencia. Los mensajes en un enlace fluyen en una sola dirección.

Las transferencias están sujetas a un esquema de control de flujo basado en el crédito, administrado mediante marcos de flujo. Esto permite que un proceso se proteja a sí mismo de ser abrumado por un volumen demasiado grande de mensajes o más simplemente para permitir que un enlace de suscripción extraiga mensajes como y cuando se desee.

Cada mensaje transferido debe ser resuelto eventualmente. La liquidación garantiza que el remitente y el destinatario estén de acuerdo con el estado de la transferencia, brindando garantías de confiabilidad. Los cambios en el estado y la liquidación de una transferencia (o conjunto de transferencias) se comunican entre los pares utilizando el marco de disposición. Se pueden imponer varias garantías de confiabilidad de esta manera: como máximo una vez, al menos una vez y exactamente una vez.

Los enlaces múltiples, en ambas direcciones, se pueden agrupar en una sesión. Una sesión es una conversación bidireccional y secuencial entre dos pares que se inicia con un marco inicial y finaliza con un marco final. Una conexión entre dos pares puede tener múltiples sesiones multiplexadas sobre ella, cada una lógicamente independiente. Las conexiones se inician con un marco abierto en el que se expresan las capacidades del par que envía, y terminan con un marco cerrado.

Formato de mensaje

AMQP define como el mensaje simple, la parte del mensaje que crea la aplicación de envío. Esto se considera inmutable ya que el mensaje se transfiere entre uno o más procesos.

Asegurarse de que el mensaje enviado por la aplicación sea inmutable permite la firma y / o el cifrado de mensajes de extremo a extremo y garantiza que cualquier comprobación de integridad (por ejemplo, hashes o compendios) siga siendo válida. El mensaje puede ser anotado por los intermediarios durante el tránsito, pero cualquier anotación se mantiene distinta del mensaje simple e inmutable. Las anotaciones se pueden agregar antes o después del mensaje.

El encabezado es un conjunto estándar de anotaciones relacionadas con la entrega que se pueden solicitar o indicar para un mensaje e incluye tiempo de vida, durabilidad, prioridad.

El propio mensaje está estructurado como una lista opcional de propiedades estándar (ID de mensaje, ID de usuario, hora de creación, respuesta, asunto, ID de correlación, ID de grupo, etc.), una lista opcional de propiedades específicas de la aplicación (es decir, propiedades extendidas). ) y un cuerpo, al que AMQP denomina datos de aplicación.

Las propiedades se especifican en el sistema de tipo AMQP, al igual que las anotaciones. Los datos de la aplicación pueden ser de cualquier forma y en cualquier codificación que elija la aplicación. Una opción es usar el sistema de tipo AMQP para enviar datos estructurados y de autodescripción.
Capacidades de mensajería

El protocolo de enlace transfiere los mensajes entre dos nodos, pero supone muy poco en cuanto a qué son esos nodos o cómo se implementan.

Una categoría clave son aquellos nodos utilizados como punto de encuentro entre remitentes y receptores de mensajes (por ejemplo, colas o temas). La especificación AMQP llama a estos nodos de distribución de nodos y codifica algunos comportamientos comunes.

Esto incluye: algunos resultados estándar para transferencias, a través de los cuales los receptores de mensajes pueden, por ejemplo, aceptar o rechazar mensajes, un mecanismo para indicar o solicitar uno de los dos patrones de distribución básicos, consumidores competidores y no competidores, a través de los modos de distribución mueven y copian respectivamente el Capacidad de crear nodos bajo demanda, por ejemplo. para colas de respuesta temporal
la capacidad de refinar el conjunto de mensajes de interés para un receptor a través de filtros.

Aunque AMQP se puede usar en sistemas simples de igual a igual, la definición de este marco para las capacidades de mensajería permite además la interoperabilidad con intermediarios de mensajería (corredores, puentes, etc.) en redes de mensajería más grandes y ricas. El marco especificado cubre los comportamientos básicos, pero permite que se desarrollen extensiones que pueden codificarse y estandarizarse aún más.

Temas Relacionados

Última actualización: octubre 25, 2018

Deja un comentario