¿Qué es una cola de mensajes fallidos?
Una cola de mensajes fallidos (DLQ) es un tipo especial de cola de mensajes que almacena temporalmente los mensajes que un sistema de software no puede procesar debido a errores. Las colas de mensajes son componentes de software que admiten la comunicación asincrónica en un sistema distribuido. Permiten enviar mensajes entre servicios de software a cualquier volumen y no requieren que el receptor de mensajes esté siempre disponible. Una cola de mensajes fallidos almacena de manera específica los mensajes erróneos que no tienen destino o que el destinatario previsto no puede procesar.
¿Por qué son importantes las colas de mensajes fallidos?
Las colas de mensajes fallidos (DLQ) existen junto con las colas de mensajes normales. Actúan como un almacenamiento temporal de mensajes erróneos y fallidos. Las DLQ evitan que la cola de origen se llene de mensajes sin procesar.
Por ejemplo, considere un software que tiene una cola de mensajes normal y una DLQ. El software utiliza la cola normal para guardar los mensajes que planea enviar a un destino. Si el receptor no responde ni procesa los mensajes enviados, el software los transfiere a la cola de mensajes fallidos.
Hay dos causas posibles por las que los mensajes se transfieren a la canalización de DLQ: el contenido de los mensajes es erróneo y los cambios en el sistema del receptor.
Contenido erróneo del mensaje
Un mensaje se moverá a una DLQ si el mensaje transmitido es erróneo. Las condiciones del hardware, el software y la red pueden dañar los datos enviados. Por ejemplo, la interferencia del hardware cambia ligeramente parte de la información durante la transmisión. La corrupción inesperada de los datos podría hacer que el receptor rechace o ignore el mensaje.
Cambios en el sistema del receptor
Un mensaje también puede pasar a una DLQ si el software receptor ha realizado cambios que el remitente desconoce. Por ejemplo, puede intentar actualizar la información de un cliente si envía un mensaje para CUST_ID_005. Sin embargo, es posible que el receptor no pueda procesar el mensaje entrante porque ha eliminado al cliente de la base de datos del sistema.
¿Cuáles son las ventajas de una cola de mensajes fallidos?
A continuación, hablamos de los beneficios de las colas de mensajes fallidos (DLQ).
Costos de comunicación reducidos
Las colas de mensajes normales o estándar siguen procesando los mensajes hasta que vence el período de retención. Esto ayuda a garantizar el procesamiento continuo de los mensajes y minimiza las posibilidades de que se bloquee la cola.
Sin embargo, si el sistema procesa miles de mensajes, una gran cantidad de mensajes de error aumentará los gastos generales de comunicación y supondrá una carga para el sistema de comunicación. En lugar de tratar de procesar los mensajes con errores hasta que caduquen, es mejor transferirlos a una cola de mensajes fallidos después de algunos intentos de procesamiento.
Solución de problemas mejorada
Si transfiere los mensajes con errores a la DLQ, los desarrolladores podrán centrarse en identificar las causas de los errores. De este modo, pueden investigar por qué el receptor no pudo procesar los mensajes, aplicar correcciones y volver a intentar entregar los mensajes.
Por ejemplo, un software bancario puede enviar miles de solicitudes de tarjetas de crédito a diario a su sistema de administración para su aprobación. A partir de ahí, el sistema de backend recibe las solicitudes, pero no puede procesarlas todas debido a que la información está incompleta. En lugar de hacer un sinfín de intentos, el software transfiere los mensajes a la DLQ hasta que el equipo de TI resuelva el problema. Esto permite que el sistema procese y entregue los mensajes restantes sin problemas de rendimiento.
¿Cuándo se debe utilizar una cola de mensajes fallidos?
Puede utilizar una cola de mensajes fallidos (DLQ) si el sistema presenta los siguientes problemas.
Colas desordenadas
Puede aprovechar las DLQ cuando sus aplicaciones no dependan de un pedido. Si bien los DLQ le ayudan a solucionar problemas de operaciones incorrectas de transmisión de mensajes, debe seguir supervisando las colas y reenviar los mensajes fallidos.
Colas FIFO
El orden de los mensajes es importante en las colas FIFO (primero en entrar, primero en salir). Cada mensaje debe procesarse antes de entregar el siguiente mensaje. Puede utilizar colas de mensajes fallidos con colas FIFO, pero la implementación de DLQ también debe ser FIFO.
¿Cuándo no se debe utilizar una cola de mensajes fallidos?
No debe utilizar una cola de mensajes fallidos (DLQ) con colas desordenadas si quiere poder seguir intentando transmitir un mensaje de forma indefinida. Por ejemplo, no utilice una cola de mensajes fallidos si el programa debe esperar a que un proceso dependiente se active o esté disponible.
Del mismo modo, no debe usar una cola de mensajes fallidos con una cola FIFO (primero en entrar, primero en salir) si no quiere romper el orden exacto de los mensajes u operaciones. Por ejemplo, no utilice una cola de mensajes fallidos con instrucciones en una lista de decisiones de edición (EDL) para una suite de edición de vídeo. En este caso, al cambiar el orden de las ediciones, se cambia el contexto de las ediciones posteriores.
¿Cómo funciona una cola de mensajes fallidos?
En su mayor parte, una cola de mensajes fallidos (DLQ) funciona como una cola de mensajes normal. La cola almacena los mensajes erróneos hasta que usted los procese para investigar el motivo del error.
A continuación, analizaremos la política de reenvío de las DLQ y cómo los mensajes entran y salen de las DLQ.
Crear una política de reenvío
El software transfiere los mensajes a una cola de mensajes fallidos según la política de reenvío. La política de reenvío consiste en reglas que determinan cuándo el software debe transferir los mensajes a la cola de mensajes fallidos. De manera específica, al definir el recuento máximo de reintentos, la política de reenvío regula la forma en que la cola de origen y la cola de mensajes fallidos interactúan entre sí.
Por ejemplo, si su desarrollador establece el número máximo de reintentos en uno, el sistema transfiere todas las entregas fallidas a la DLQ después de un solo intento. Algunas entregas fallidas pueden deberse a una sobrecarga temporal de la red o a problemas de software. Esto envía muchos mensajes no entregados a la DLQ. Para lograr el equilibrio adecuado, los desarrolladores optimizan el recuento máximo de reintentos para garantizar que el software realice suficientes reintentos antes de transferir los mensajes a la DLQ.
Transferir mensajes a la cola de mensajes fallidos
Los intentos de entrega entre el remitente y el destinatario pueden fallar por varios motivos:
- El receptor no recibe el mensaje porque no existe.
- El mensaje contiene errores.
- El mensaje supera los límites de longitud de la cola o del mensaje. Por ejemplo, algunos receptores no pueden procesar mensajes que superen un tamaño específico.
- El tiempo de vida (TTL) del mensaje ha caducado. TTL es un valor que indica durante cuánto tiempo es válido un paquete de datos determinado en la red.
Retirar los mensajes de la cola de mensajes fallidos
Cuando los mensajes se transfieren a la cola de mensajes fallidos, los desarrolladores inspeccionan los mensajes erróneos para determinar las causas. Los mensajes de la DLQ pueden contener información valiosa para evitar que se repitan problemas similares en el futuro. Después de que los desarrolladores analicen y solucionen los problemas, el sistema retira los mensajes de la DLQ y los coloca en la cola de origen. Esto permite que el remitente siga procesando los mensajes.
¿Cómo puede AWS cumplir con sus requisitos de cola de mensajes fallidos?
Amazon Simple Queue Service (Amazon SQS) proporciona un enfoque escalable para intercambiar mensajes entre sistemas distribuidos a gran escala. Los desarrolladores utilizan Amazon SQS para crear aplicaciones web fiables con colas estándar totalmente administradas y colas FIFO (primero en entrar, primero en salir).
Otras ventajas de Amazon SQS:
- Amazon SQS permite a los sistemas crear un número ilimitado de colas de mensajes
- Los desarrolladores pueden transferir mensajes en lotes para mejorar la rentabilidad
- Amazon SQS admite el bloqueo de mensajes, lo que impide que varios equipos procesen el mismo mensaje de manera simultánea
Cree una cuenta de AWS y comience a utilizar Amazon Web Services (AWS) hoy mismo.
Siguientes pasos en AWS
Obtenga acceso instantáneo al nivel Gratuito de AWS.
Comience a crear en la consola de administración de AWS.