Cola de Mensajes
Una cola de mensaje es un protocolo de comunicaciones asíncrono, el cual consiste en comunicar dos procesos separados mediante una cola (de mensajes) la cual incluye una secuencia de objetos creados por el emisor (productor) esperando ser procesados por el proceso que lo consumirá (consumidor). Un sistema que pone un mensaje en una cola de mensajes no requiere una respuesta inmediata para continuar el procesamiento.
Una cola de mensajes ofrece un búfer ligero que almacena temporalmente los mensajes, y puntos de enlace que permiten a los componentes de software conectarse a la cola para enviar y recibir mensajes. ver Figura 1.
![]() |
| 1. Cola de Mensajes |
Existen varias soluciones para protocolos de colas de mensajes: AMQP, MQTT, STOMP. Veamos las características de AMQP.
Protocolos de Colas de Mensaje AMQP
AMQP (Advanced Message Queuing Protocol). El protocolo AMQP opera de la siguiente manera: por un lado, el protocolo (en colaboración con un bróker de mensajería) se encarga de una transmisión de datos. Por otro, AMQP permite almacenar mensajes en una cola. Esto, a su vez, permite una comunicación asíncrona: transmisor y receptor no deben actuar al mismo ritmo. El receptor (consumidor) recuperará el mensaje de la cola cuando tenga capacidad disponible para ello ( el receptor no tiene por qué aceptar el procesamiento de la información ni la confirmación de la recepción al emisor). Esto ofrece al productor (publicador), entre otras cosas, la posibilidad de seguir trabajando y se evitan los tiempos de inactividad. Ver Figura 2.![]() |
| 2. Protocolo AMQP |
- El productor o publicador (publisher) crea un mensaje, lo envía y es publicado en un buzón (exchange).
- El servidor (bróker de mensajería) distribuye o enruta el mensaje desde el buzón de acuerdo con unas reglas definidas (bindings) en diferentes colas (queue).
- El consumidor (consumer) recupera el mensaje de la cola a la que está suscrito.
El buzón o intercambiador (exchange) recibe los mensajes y dirige los datos a una cola utilizando una vinculación (binding) que le permite decidir cuál es la correcta.
El bróker interrumpe la difusión del mensaje una vez más: el intercambiador recibe los mensajes y dirige los datos a la cola correcta. La vinculación informa al intercambiador sobre la cola a la que pertenece el mensaje.
Cola de Mensajes y Microservicios
Una cola de mensajes es una forma de comunicación asíncrona que se usa en arquitecturas de microservicios. Los mensajes se almacenan en la cola hasta que se reciben y, luego se eliminan, siendo cada mensaje procesado una sola vez.
Esta estructura intermedia permite ajustar la velocidad y disponibilidad de diferentes microservicios de forma que puedan trabajar conjuntamente y puedan recuperarse de los errores, lo que aumenta el nivel de tolerancia a fallos.
La siguiente figura, Figura 3, muestra la arquitectura propuesta para una aplicación de comercio electrónico, usando microservicios. Los microservicios proyectados son: Facturación, Notificaciones, Pagos, Gestión de Cuenta, Archivos y Reportes. Cada microservicio tiene una interfaz pública, API. El API Gateway, es un microservicio adicional que opera como un balanceador de cargas.
| 3. Arquitectura de Aplicación de Comercio Electrónico. Tomado de [4]. |
En la figura 3, el API Gateway y Orden, poseen un adaptador para trabajar con cola de mensajes ( con RabbitMQ ). Este adaptador les provee acceso a un servidor de cola de mensajes, en el cual pueden publicar información en caso de que ocurra algún error en la comunicación. En tal sentido, el API Gateway al recibir un mensaje de error cuando se comunica con Orden, guarda la información en la cola. Dicha información será leída de la cola de mensaje cuando el microservicio Orden esté disponible nuevamente, y de esta manera pueda continuar con el flujo del proceso.
El mismo mecanismo de cola de mensaje se utiliza entre el microservicio de Notificación y el de Usuario: cuando el microservicio de Notificación hace el llamado asíncrono a un método del microservicio de Usuario , y por algún error o falla el microservicio de Usuario no está disponible, el microservicio Notificación publicará un mensaje en la cola de mensajes. Cuando el microservicio Usuario esté disponible, automáticamente leerá la cola de mensaje para resolver las llamadas a funciones que estén en la cola.
Referencias
- Coulouris, George F. Distributed Systems: Concepts and Design. Boston: Addison-Wesley, 2012.
- Tanenbaum, Andrew S., and Maarten van Steen. Distributed Systems: Principles and Paradigms. Upper Saddle River, NJ: Pearson Prentice Hall, 2007.
- Rodrigues, Luís and Veríssimo, Paulo. Advances in Distributed Computing and Middleware.
- Salas, A., Marquez, A. Arquitectura orientada a Microservicios aplicada a un sistema de Comercio Electrónico. Trabajo de Grado de Pregrado, UNEG. 2017.
- Protocolo AMQP
- Microservicios y Colas de Mensajes
- Cola de Mensajes


No hay comentarios.:
Publicar un comentario