Avanzada mensaje Queue Server protocolo

Ir a: navegación, búsqueda de

El Avanzada mensaje Queue Server protocolo (AMQP) es un estándar abierto capa de aplicación Protocolo para la middleware orientado a mensajes. Los rasgos definitorios de AMQP son mensaje orientación, cola, enrutamiento (incluyendo punto a punto y publicación y suscripción), fiabilidad y seguridad.[1]

AMQP ordena el comportamiento del proveedor de mensajería y cliente en la medida en que las implementaciones de diferentes proveedores son interoperables, de la misma manera como HTTP, FTP, SMTP, etc. han creado sistemas interoperables. Anteriores estandardizaciones de middleware han ocurrido a nivel de API (p. ej. JMS) y se centraron en estandarizar la interacción programador con middleware diferentes implementaciones, en lugar de proporcionar interoperabilidad entre múltiples implementaciones.[2] 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 alambre. Un protocolo de nivel de alambre es una descripción del formato de los datos que se envían a través de la red como una secuencia de octetos. Por lo tanto, cualquier herramienta que puede crear e interpretar mensajes que se ajusten a este formato de datos puede interoperar con cualquier otra herramienta compatible con independientemente del lenguaje de implementación.

Contenido

  • 1 Resumen
  • 2 Historia
  • 3 Descripción de AMQP 1.0
    • 3.1 Tipo de sistema
    • 3.2 Performatives y el protocolo de enlace
    • 3.3 Formato del mensaje
    • 3.4 Capacidades de mensajería
  • 4 Implementaciones de
    • 4.1 Implementaciones de corredor AMQP 1.0
    • 4.2 Implementaciones de corredor AMQP pre-1.0
  • 5 Especificación
  • 6 Especificaciones comparables
  • 7 Véase también
  • 8 Notas
  • 9 Referencias
  • 10 Acoplamientos externos

Resumen

AMQP es un binario, protocolo de capa de aplicación, diseñado para soportar eficientemente una amplia variedad de aplicaciones y patrones de comunicación de mensajería. Proporciona flujo controlado,[3] garantiza la comunicación orientada hacia el mensaje con la entrega de mensajes tales como la mayoría-de una vez (donde cada mensaje se entrega una vez o nunca), menos-de una vez (donde cada mensaje va a ser entregado, pero pueden hacerlo varias veces) y exactamente-una vez (donde el mensaje será siempre sin duda llegar y hacer tan sólo una vez),[4] autenticación y encriptación basada en SASL o TLS.[5] Se supone que un protocolo de capa de transporte fiable subyacente como el protocolo de Control de transmisión (TCP).[6]

La especificación de AMQP se define en varias capas: (i) un sistema de tipo, formato extensible (ii) un protocolo simétrico, asincrónico para la transferencia de mensajes de un proceso a otro, (iii) una norma y (iv) un conjunto de estandarizado pero extensibles 'capacidades de mensajería."

Historia

AMQP se originó en 2003 por John O'Hara en el JPMorgan Chase en Londres, Reino Unido.[1] Desde el principio AMQP fue concebido como un esfuerzo cooperativo abierto. Desarrollo inicial fue por JPMorgan Chase desde mediados de 2004 a mediados de 2006 que iMatix Corporation para una documentación C corredor y protocolo.[Nota 1] En 2005, JPMorgan Chase se acercó a otras empresas para formar un grupo de trabajo que incluye Cisco Systems, IONA Technologies, iMatix, Red Hat, y Equipo de estándares de innovación de flujo de trabajo de transacción (TORCEDURA). En el mismo año JPMorgan Chase se asoció con Red Hat para crear Qpid Apache, inicialmente en Java y C++. Forma independiente, RabbitMQ fue desarrollado en Erlang por tecnologías de conejo, seguido más adelante por las implementaciones de Microsoft y StormMQ.

El grupo de trabajo creció a 23 empresas, entre ellas Bank of America, Barclays, Cisco Systems, Credit Suisse, Deutsche Börse, Goldman Sachs, HCL Technologies Ltd, Progress Software, Software IIT, INETCO Systems Limited, Informatica (incluyendo 29 oeste), JPMorgan Chase, Microsoft Corporation, mis canales, Novell, Red Hat, Software AG, Sistemas de consuelo, StormMQ, Tervela Inc., Ltd de innovaciones de proceso TWIST, VMware (que adquiere tecnologías de conejo) y WSO2.

En agosto de 2011, el grupo de trabajo de AMQP anunció su reorganización en un OASIS sección de miembros.[9]

AMQP 1.0 fue lanzado por el grupo de trabajo de AMQP el 30 de octubre de 2011, en una conferencia en Nueva York. En el evento Microsoft, Red Hat, VMware, Apache, INETCO y Software de IIT demostraron el software que se ejecuta el protocolo en una demostración de interoperabilidad. Al día siguiente, el 01 de noviembre de 2011, la formación de un OASIS Comité técnico fue anunciado[10] para avanzar en esto contribuyó AMQP versión 1.0 en el proceso internacional de estándares abiertos. El primer proyecto de OASIS fue lanzado en febrero de 2012,[11] los cambios en comparación con el publicó el grupo de trabajo se limita a ediciones para mayor claridad (no hay cambios funcionales). El segundo proyecto fue lanzado para la revisión pública el 20 de junio (de nuevo con ningún cambio funcional),[12] y AMQP fue aprobada como estándar OASIS el 31 de octubre de 2012.[13]

AMQP OASIS fue aprobado para el lanzamiento como un ISO y el IEC internacional estándar en abril de 2014.[14] AMQP 1.0 fue votada por el Comité técnico conjunto sobre tecnologías de la información (JTC1) de la organización internacional de estándares (ISO) y la Comisión Electrotécnica Internacional (IEC). La presentación de OASIS AMQP aprobada se ha dado la designación ISO/IEC 19464.

Versiones anteriores de AMQP fueron 0-8, publicado en junio de 2006, 0-9, publicado en diciembre de 2006, 0-10 publicado en febrero de 2008[15] y 0-9-1, publicado en noviembre de 2008. Estas versiones anteriores son significativamente diferentes de la especificación de 1,0.

Mientras AMQP originado en la industria de servicios financieros, tiene aplicabilidad general para una amplia gama de middleware problemas.

Descripción de AMQP 1.0

Tipo de sistema

AMQP define un esquema de codificación autodescriptivo permitiendo interoperabilidad representación de una amplia gama de tipos utilizados. También permite con datos para anotarse con un significado adicional.[16] El ejemplo dado en la especificación indica que un valor de cadena particular de hecho debe ser entendido como una dirección URL. Asimismo un valor de mapa que contiene pares de clave y valor para 'nombre', 'dirección' etc., puede anotarse como representación de un tipo de 'cliente'.

El tipo de sistema es utilizado para definir un formato de mensaje permitiendo estándar y extendido metadatos para ser expresado y entendido mediante el procesamiento de las entidades. También se utiliza para definir a las primitivas de comunicación a través del cual se intercambian mensajes entre dichas entidades, es decir, el AMQP cuerpos de marco.

Performatives y el protocolo de enlace

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

  • abrir
  • comenzar
  • adjuntar
  • transferencia
  • flujo
  • disposición
  • separar
  • final
  • cerrar

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

Un adjuntar cuerpo marco es enviado a iniciar un nuevo vínculo; un separar para un enlace. Podrán establecerse enlaces con el fin de recibir o enviar mensajes.

Los mensajes se envían en un establecido enlace uso de la transferencia marco. Fluyen de mensajes en un enlace en solamente una dirección.

Las transferencias están sujetas a un esquema de control de flujo basado en crédito, manejado usando flujo Marcos. Esto permite un proceso para protegerse de ser abrumado por un volumen demasiado grande de mensajes o más simplemente para permitir que una suscripción a mensajes de tirón como y cuando se desee.[17]

Cada mensaje transferido debe ser finalmente se establecieron. Establecimiento se asegura de que el remitente y el receptor de acuerdo al estado de la transferencia, proporcionando garantías de fiabilidad. Cambios en el estado y el establecimiento para una transferencia (o conjunto de transferencias) se comunica entre los pares utilizando el disposición marco. Varios fiabilidad garantiza puede aplicarse de esta manera: la mayoría-de una vez, menos-de una vez y exactamente-una vez.[18]

Enlaces múltiples, en ambas direcciones, se pueden agrupar en un período de sesiones. Una sesión es un bidireccional, conversación secuencial entre dos compañeros que se inicia con un comenzar marco y terminó con un final marco. Una conexión entre dos compañeros puede tener varias sesiones multiplexadas a través de él, cada uno lógicamente independientes. Las conexiones se inician con un abrir marco en el que capacidades de envío del otro extremo se expresó y terminó con un cerrar marco.

Formato del mensaje

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

Asegurar el mensaje como enviado por la aplicación es inmutable permite mensajes end-to-end firma o cifrado y asegura que las comprobaciones de integridad (hashes o resúmenes) siguen siendo válidas. El mensaje puede ser anotado por intermediarios durante el tránsito, pero cualquier tales anotaciones se mantienen distintas de lo inmutable mensaje de desnudo. Las anotaciones pueden añadirse antes o después del mensaje descubierto.

El cabecera es un conjunto de anotaciones relacionadas con la entrega que pueden ser solicitadas o indicadas para un mensaje e incluye el tiempo para vivir, durabilidad, prioridad.[19]

El mensaje descubierto está estructurado como una lista opcional de propiedades estándar (id de mensaje, id de usuario, hora de creación, respuesta a, tema, correlación id, id de grupo etc.), una lista opcional de propiedades específicas de la aplicación (es decir, propiedades extendidas) y un cuerpo, que AMQP se refiere como datos de la aplicación.[20]

Propiedades se especifican en el sistema de tipo AMQP, como son las anotaciones. Elige la aplicación que los datos pueden ser de cualquier forma y en cualquier codificación de la aplicación. Una opción es utilizar el sistema de tipo AMQP enviar estructurado, self-describing datos.

Capacidades de mensajería

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

Una categoría clave es aquellos nodos que se utiliza como un punto de encuentro entre emisores y receptores de mensajes (p. ej. colas de trabajos o temas). La especificación de AMQP llama tales nodos nodos de distribución y codifica algunos comportamientos comunes.[21]

Esto incluye:

  • algunos resultados estándar para las transferencias, a través del cual los receptores de mensajes por ejemplo pueden aceptar o rechazar mensajes de [22]
  • un mecanismo para indicar o solicitar uno de los dos patrones básicos de distribución, competencia - y no compitiendo-consumidores, a través de la modos de distribución movimiento y copia respectivamente [23]
  • la habilidad de crear nodos en la carta,[24][25] por ejemplo, para colas de respuesta temporal
  • la capacidad de refinar el sistema de mensajes de interés a un receptor a través de filtros [26]

Aunque AMQP puede ser usado en sistemas peer-to-peer simple, definir este marco de capacidades de mensajería además permite interoperabilidad con los mensajes de intermediarios (corredores, puentes etc) en redes de mensajería más grandes, más ricas. El marco especificado abarca comportamientos básicos pero permite extensiones a evolucionar más codificadas y estandarizadas.

Implementaciones de

Implementaciones de corredor AMQP 1.0

  • Qpid Apache, un abrir-fuente proyecto en el Fundación Apache
  • Apache ActiveMQ, un abrir-fuente proyecto en el Fundación Apache
  • RabbitMQ, un abrir-fuente proyecto patrocinado por Fundamental, apoya principalmente AMQP 0-9-1, con 1.0 mediante plugin experimental

Implementaciones de corredor AMQP pre-1.0

  • JORAM, un Java abrir-fuente implementación de la Consorcio OW2.
  • Qpid Apache mantiene soporte para múltiples versiones AMQP
  • StormMQ, un alojado servicio de cola de mensajes utilizando AMQP. Se ofrece como comercial servicio gestionado.

Especificación

Versión del protocolo AMQP 1.0 es la versión actual de la especificación. Se centra en características que son necesarias para la interoperabilidad a escala de Internet. Contiene enrutamiento menos explícitas que las versiones anteriores porque la funcionalidad es el primero en estandarizarse rigurosamente. Interoperabilidad de AMQP 1.0 ha sido más ampliamente probado con ejecutores más que versiones anteriores.[27]

El sitio web de AMQP contiene la Especificación de OASIS para la versión 1.0.

Versiones anteriores de AMQP, publicado antes del lanzamiento de 1.0 (ver historia arriba) y significativamente diferente de él, son:

  • AMQP 0-9-1, que tiene clientes "para muchas plataformas y lenguajes de programación populares"[28]
  • AMQP 0-10

Especificaciones comparables

Estas son las especificaciones de protocolo abierto conocido que cubren el espacio AMQP igual o similar:

  • Transmisión de texto orientado a protocolo de mensajería (STOMP), un protocolo basado en texto desarrollado en Codehaus; utiliza el JMS-como la semántica de 'destino'.
  • Mensajería extensible y Protocolo de presencia (XMPP), la mensajería Extensible y Protocolo de presencia.
  • MQTT, un protocolo ligero pub-sub.
  • OpenWire según lo utilizado por ActiveMQ.

Una comparación informal de XMPP y se puede encontrar AMQP aquí.

Servicio de mensajería Java (JMS), es a menudo comparado AMQP. Sin embargo, JMS es una especificación de API (parte de la Java EE especificación) que define cómo se implementan mensaje productores y consumidores. JMS no garantiza la interoperabilidad entre las implementaciones y JMS-obediente sistema de mensajería en uso deba desplegarse en cliente y servidor. Por otro lado, AMQP es una especificación de protocolo de nivel de hilo. En teoría AMQP proporciona interoperabilidad como diferentes software compatible con AMQP puede implementarse en los lados cliente y servidor. Tenga en cuenta que, como HTTP y XMPP, AMQP no tiene una API estándar.

Véase también

  • Cola de mensajes
  • Servicio de cola de mensajes

Notas

  1. ^ En 2010 iMatix suspendió su ejecución AMQP, OpenAMQ,[7] y resignado desde el grupo de trabajo de AMQP.[8]

Referencias

  1. ^ a b O ' Hara, J. (2007). "hacia un materia enterprise middleware" (PDF). Coleta ACM. 5 (4): 48 – 55. doi:10.1145/1255421.1255424. 
  2. ^ Vinoski, S. (2006). "Mensaje Queue Server protocolo avanzado" (PDF). IEEE Internet Computing. 10 (6): 87 – 89. doi:10.1109/MIC.2006.116. 
  3. ^ "OASIS AMQP versión 1.0, las secciones 2.6.7-2.6.8". Comité técnico de OASIS AMQP. 18 de junio 2012. 
  4. ^ "OASIS AMQP versión 1.0, las secciones 2.6.12-2.6.13". Comité técnico de OASIS AMQP. 18 de junio 2012. 
  5. ^ "OASIS AMQP versión 1.0, sección 5.1". Comité técnico de OASIS AMQP. 18 de junio 2012. 
  6. ^ "OASIS AMQP versión 1.0, sección 2.1". Comité técnico de OASIS AMQP. 18 de junio 2012. 
  7. ^ "iMatix terminará OpenAMQ apoyo 2011". Anuncio en la lista de usuarios OpenAMQ. 12 de julio 2012. 
  8. ^ "Dimisión de AMQP grupo de trabajo". Anuncio de lista de correo electrónico de grupo de trabajo de AMQP. 12 de julio 2012. 
  9. ^ Grupo de trabajo de AMQP transiciones a la sección de miembros OASIS
  10. ^ OASIS forma AMQP Comité técnico para promover negocio mensajes interoperabilidad Middleware, móviles y entornos de nube
  11. ^ "30 días para revisión pública para OASIS AMQP versión 1.0". 21 de febrero de 2012. 18 de junio 2012. 
  12. ^ «15 días para revisión pública para OASIS AMQP versión 1.0». 20 de junio de 2012. 20 de junio 2012. 
  13. ^ "AMQP 1.0 se convierte en estándar OASIS". 31 de octubre de 2012. 1 de noviembre 2012. 
  14. ^ "Tecnología de la información - especificación de avanzada mensaje Queue Server protocolo (AMQP) v1.0". ISO/IEC 19464. ISO. 1 de mayo 2014. 
  15. ^ "Reunión de PMC AMQP actas 13 de febrero de 2008". AMQP PMC minutos. Grupo de trabajo de AMQP. 15 de junio 2012. 
  16. ^ "OASIS AMQP versión 1.0, sección 1.1". Comité técnico de OASIS AMQP. 18 de junio 2012. 
  17. ^ "OASIS AMQP versión 1.0, sección 2.6.7-2.6.9". Comité técnico de OASIS AMQP. 18 de junio 2012. 
  18. ^ "OASIS AMQP versión 1.0, sección 2.6.12-2.6.14". AMQP WorkingGroup. 18 de junio 2012. 
  19. ^ "OASIS AMQP versión 1.0, sección 3.2.1". Comité técnico de OASIS AMQP. 18 de junio 2012. 
  20. ^ "OASIS AMQP versión 1.0, sección 3.2". Comité técnico de OASIS AMQP. 18 de junio 2012. 
  21. ^ "OASIS AMQP versión 1.0, sección 3.3". Comité técnico de OASIS AMQP. 15 de junio 2012. 
  22. ^ "OASIS AMQP versión 1.0, sección 3.4". Comité técnico de OASIS AMQP. 18 de junio 2012. 
  23. ^ "OASIS AMQP versión 1.0, sección 3.5.2". Comité técnico de OASIS AMQP. 18 de junio 2012. 
  24. ^ "OASIS AMQP versión 1.0, sección 3.5.3". Comité técnico de OASIS AMQP. 18 de junio 2012. 
  25. ^ "OASIS AMQP versión 1.0, sección 3.5.4". Comité técnico de OASIS AMQP. 18 de junio 2012. 
  26. ^ "OASIS AMQP versión 1.0, sección 3.5.1". Comité técnico de OASIS AMQP. 18 de junio 2012. 
  27. ^ "Estado de las versiones Pre-1.0 de AMQP". Sitio AMQP. 28 de mayo 2014. 
  28. ^ "AMQP 0-9-1 modelo explicó". VMWare, Inc.. 1 de noviembre 2012. 

Acoplamientos externos

  • AMQP Web
  • Comité técnico de OASIS AMQP
  • Resumen de alto nivel de AMQP y el modelo de AMQP (versión 0-9-1)
  • Análisis de OMG de AMQP y comparación con DDS-RTPS
  • Google Tech Talk, video y diapositivas, sobre RabbitMQ
  • Presentación de AMQP y RestMS mensajes en FOSDEM 2009
  • Lista de clientes AMQP

Otras Páginas

Obtenido de"https://en.copro.org/w/index.php?title=Advanced_Message_Queuing_Protocol&oldid=734636776"