Introducción al protocolo AMQP
AMQP (Advanced Message Queuing Protocol) es un protocolo estándar de nivel de aplicación que proporciona servicios de mensajería unificada y es un estándar abierto para protocolos de nivel de aplicación diseñados para middleware orientado a mensajes. AMQP es un protocolo de red para pasar mensajes asíncronos entre procesos.
Los clientes y middleware de mensajes basados en este protocolo pueden entregar mensajes sin estar restringidos por diferentes productos cliente/middleware, diferentes lenguajes de desarrollo, etc.
Las principales características de AMQP son orientado a mensajes, en cola, enrutamiento (incluyendo peer-to-peer y publicación/suscripción), fiabilidad y seguridad. AMQP hace cumplir el comportamiento de los proveedores de mensajes y clientes, permitiendo una verdadera interoperabilidad entre diferentes proveedores.
Mensajes de enrutamiento
En la arquitectura AMQP, cualquier enrutamiento exitoso de mensajes consta de tres partes:
- Intercambio: Donde los productores publican mensajes
- Colas: donde los consumidores reciben mensajes
- Vinculaciones: Cómo se enrutan los mensajes desde el switch a una cola específica
Intercambios y Vinculaciones
¿Cómo llega el mensaje a la cola? Siempre que quieras entregar un mensaje a un consumidor, primero debes enviarlo al intercambiador. Luego, basándose en ciertas reglas o claves de enrutamiento, RabbitMQ decidirá a qué cola debe entregar los mensajes.
Las reglas —o claves de enrutamiento— te permiten vincular una cola al intercambio. RabbitMQ intentará emparejar la clave de enrutamiento del mensaje con la clave utilizada en la asignación. El mensaje se entrega entonces a la cola según uno de los cuatro tipos de intercambio: fanout, topic, direct, header
Intercambio de Fanout
Este tipo de intercambio transmite todos los mensajes que recibe a todas las colas vinculadas a él. Cualquier clave de enrutamiento proporcionada con el mensaje publicado será ignorada.
Intercambio de temas
En este tipo de intercambio, los mensajes se envían a una cola basada en la clave de enrutamiento. Esto significa que los mensajes enviados al intercambio de temas deben tener una clave de enrutamiento específica, que debe ser una lista de palabras, separadas por puntos (por ejemplo, 'acs.deviceoperations.'). El límite de redacción es de 255 bytes.
La clave de enlace debe estar en el mismo formato que la clave de enrutamiento. Por lo tanto, los mensajes enviados con una clave de enrutamiento específica se entregarán a cada cola vinculada con una clave de enlace correspondiente.
Las claves de vinculación permiten las siguientes reglas de expresión:
*(asterisco) solo puede reemplazar una palabra # (hash) puede reemplazar cero o más palabras Cuando una cola está vinculada con una clave de vinculación "#" (hash), recibirá todos los mensajes independientemente de la clave de enrutamiento, igual que en un intercambio de fan-out Fanout.
Intercambio directo
Cuando se declara una cola, esta seráVincula automáticamente a un switch que use el nombre de la cola como clave de enrutamiento。 Si la clave de enrutamiento coincide, el mensaje se entrega a la cola correspondiente.
Intercambio de cabeceras
Los conmutadores de cabecera son algo similares a los conmutadores de tema, pero a diferencia de los conmutadores de tema, el enrutamiento se basa en claves de ruta, y los valores de enrutamiento de los conmutadores de cabecera se basan en los datos de cabecera del mensaje. La clave de enrutamiento del cambio de tema es solo una cadena, mientras que el switch de cabecera puede ser un entero y un hash.
(Fin)
|