Colas de Amazon SQS - Amazon Simple Queue Service

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Colas de Amazon SQS

Amazon SQSColas de mensajes fallidos de(DLQ), qué otras colas (colas de origen) puede dirigirse a mensajes que no se pueden procesar (consumir) correctamente. Las colas de mensajes fallidos resultan útiles para depurar la aplicación o el sistema de mensajería, ya que le permiten aislar los mensajes que no se consumen para determinar por qué no se procesaron correctamente. Para obtener información acerca de cómo crear una cola y configurar una cola de mensajes fallidos para ella mediante la consola de Amazon SQS, consulteConfiguración de una cola de mensajes fallidos (consola). Una vez que haya depurado la aplicación de consumidor o la aplicación de consumidor esté disponible para consumir el mensaje, puede utilizar elCapacidad de redireccionamiento de colas de mensajes fallidospara volver a mover los mensajes a la cola de origen con solo hacer clic en un botón de la consola de Amazon SQS.

importante

Amazon SQSnocrear la cola de mensajes fallidos automáticamente. Primero debe crear la cola antes de utilizarla como cola de mensajes fallidos.

¿Cómo funcionan las colas de mensajes fallidos?

A veces, los mensajes no se pueden procesar debido a una serie de problemas posibles, como, por ejemplo, condiciones erróneas dentro de la aplicación productora o consumidora, o un cambio de estado inesperado que provoca un problema con el código de la aplicación. Por ejemplo, si un usuario realiza un pedido en una página web con un ID de producto determinado, pero el ID del producto se ha eliminado, el código de la tienda web muestra un error, y el mensaje con la solicitud de pedido se envía a una cola de mensajes fallidos.

Ocasionalmente, puede que los productores y los consumidores no interpreten aspectos del protocolo que utilizan para comunicarse entre sí, lo que puede provocar daños o pérdidas de mensajes. Además, los errores de hardware del consumidor podrían dañar la carga de los mensajes.

Lapolítica de reconducciónespecifica elcola de origen, elCola de mensajes fallidosy las condiciones bajo las cuales Amazon SQS mueve los mensajes de la primera a la segunda si el consumidor de la cola de origen no puede procesar un mensaje un número especificado de veces. LamaxReceiveCountes el número de veces que un consumidor intenta recibir un mensaje de una cola sin eliminarlo antes de que se traslade a la cola de mensajes fallidos. Configuración demaxReceiveCounta un valor bajo, como 1, provocaría que no se reciba un mensaje para que el mensaje se mueva a la cola de letras sin salida. Estos errores incluyen errores de red y errores de dependencia del cliente. Para garantizar que su sistema sea resistente frente a errores, establezca lamaxReceiveCountlo suficientemente alto como para permitir reintentos suficientes.

Lapolítica de permiso de reconducirespecifica qué colas de origen pueden acceder a la cola de mensajes fallidos. Esta política se aplica a una cola de mensajes fallidos. Puede elegir si desea permitir todas las colas de origen, permitir colas de origen específicas o denegar todas las colas de origen. El valor predeterminado es permitir que todas las colas de origen utilicen la cola de letras sin salida. Si elige permitir colas específicas (utilizando elbyQueue), puede especificar hasta 10 colas de origen mediante la cola de origen Amazon Resource Name (ARN). Si especificasdenyAll, la cola no se puede utilizar como cola de mensajes fallidos.

Para especificar una cola de mensajes fallidos, puede utilizar la consola o laAWS SDK for Java. Debe hacerlo para cada cola que envíe mensajes a una cola de mensajes fallidos. Varias colas del mismo tipo pueden dirigirse a una sola cola de mensajes fallidos. Para obtener más información, consulteConfiguración de una cola de mensajes fallidos (consola)y laRedrivePolicyyRedriveAllowPolicyatributos deCreateQueueoSetQueueAttributesaction.

importante

La cola de mensajes fallidos de una cola FIFO también debe ser una cola FIFO. De igual manera, la cola de mensajes fallidos de una cola estándar también debe ser una cola estándar.

Debe usar la mismaCuenta de AWSpara crear la cola de mensajes fallidos y las demás colas que envían mensajes a la cola de mensajes fallidos. Además, las colas de mensajes fallidos deben residir en la misma región que el resto de colas que utilizan la cola de mensajes fallidos. Por ejemplo, si crea una cola en la región EE.UU. Este (Ohio) y desea utilizar una cola de mensajes fallidos con dicha cola, la segunda cola también debe estar en la región EE.UU. Este (Ohio).

La caducidad de un mensaje siempre se basa en la marca de hora de la cola original. Cuando un mensaje se mueve a una cola de mensajes fallidos, la marca de hora de la cola no cambia. LaApproximateAgeOfOldestMessagemétrica indica cuándo el mensaje se ha movido a la cola de letras sin salida,nocuando el mensaje se envió originalmente. Por ejemplo, supongamos que un mensaje pasa 1 día en la cola original antes de moverlo a una cola de letras sin salida. Si el período de retención de la cola de cadáveres es de 4 días, el mensaje se elimina de la cola de cadáveres transcurridos 3 días y elApproximateAgeOfOldestMessagees 3 días. Por lo tanto, es recomendable establecer siempre el período de retención de una cola de letras sin salida para que sea más largo que el período de retención de la cola original.

¿Cuáles son los beneficios de las colas de mensajes fallidos?

La principal tarea de una cola de mensajes fallidos es gestionar el ciclo de vida de los mensajes que no se consumen. Una cola de mensajes fallidos le permite dejar de lado y aislar los mensajes que no se pueden procesar correctamente para determinar por qué no se procesaron correctamente. La configuración de una cola de mensajes fallidos le permite hacer lo siguiente:

  • Configurar una alarma para todos los mensajes que se movieron a una cola de mensajes fallidos.

  • Examinar los registros para ver si hay excepciones que podrían haber causado que los mensajes se movieran a una cola de mensajes fallidos.

  • Analizar el contenido de los mensajes que se movieron a una cola de mensajes fallidos para diagnosticar problemas de software o problemas de hardware del productor o consumidora.

  • Determinar si ha concedido al consumidor tiempo suficiente para procesar los mensajes.

¿Cómo gestionan los diferentes tipos de cola los errores en los mensajes?

Colas estándar

Colas estándarseguir procesando mensajes hasta que termina el periodo de retención. Este procesamiento continuo de mensajes minimiza las posibilidades de que la cola quede bloqueada por mensajes que no se pueden procesar. El procesamiento continuo de mensajes también proporciona una recuperación más rápida de la cola.

En un sistema que procesa miles de mensajes, el hecho de tener un gran número de mensajes que el consumidor no reconoce ni elimina de forma reiterada podría aumentar los costos y suponer una carga adicional para el hardware. En lugar de intentar procesar mensajes con errores hasta que caducan, es mejor moverlos a una cola de mensajes fallidos después de algunos intentos de procesamiento.

nota

Las colas estándar permiten un número elevado de mensajes a bordo. Si la mayoría de los mensajes no se pueden consumir y no se envían a una cola de mensajes fallidos, la tasa de procesamiento de mensajes válidos se puede ralentizar. Por tanto, para mantener la eficacia de la cola, asegúrese de que su aplicación gestiona correctamente el procesamiento de mensajes.

Colas FIFO

Colas FIFOproporcionar procesamiento único al consumir los mensajes de forma secuencial desde un grupo de mensajes. Así, aunque el consumidor puede seguir recuperando mensajes ordenados de otro grupo de mensajes, el primer grupo de mensajes sigue sin estar disponible hasta que el mensaje que bloquea la cola se procesa correctamente.

nota

Las colas FIFO permiten que haya menos mensajes a bordo. Por lo tanto, para evitar que un mensaje bloquee la cola FIFO, asegúrese de que la aplicación gestiona correctamente el procesamiento de mensajes.

¿Cuándo debo usar una cola de mensajes fallidos?

Utilice colas de mensajes fallidos con las colas estándar. Siempre debe aprovechar las colas de mensajes fallidos cuando sus aplicaciones no dependan de la ordenación. Las colas de mensajes fallidos pueden ayudarle a solucionar problemas de las operaciones incorrectas de transmisión de mensajes.

nota

Aunque utilice colas de mensajes fallidos, debe seguir monitorizando las colas y reintentar el envío de los mensajes que fallan por motivos transitorios.

Utilice colas de mensajes fallidos para reducir el número de mensajes y para reducir la posibilidad de exponer su sistema amensajes de píldora venen(mensajes que se pueden recibir pero no se pueden procesar).

No utilice una cola de mensajes fallidos con colas estándar cuando desee poder seguir reintentando la transmisión de un mensaje de forma indefinida. Por ejemplo, no utilice una cola de mensajes fallidos si su programa debe esperar a que un proceso dependiente esté activo o disponible.

No utilice una cola de mensajes fallidos con una cola FIFO si no desea romper el orden exacto de los mensajes o las operaciones. Por ejemplo, no utilice una cola de mensajes fallidos con instrucciones de una lista de decisiones de edición (EDL) para un conjunto de edición de vídeo, donde al cambiar el orden de las ediciones se cambia el contexto de las ediciones posteriores.

Sacar mensajes de una cola de mensajes fallidos

Puede usarCola de mensajes fallidospara administrar el ciclo de vida de los mensajes no consumidos. Una vez que haya investigado los atributos y los metadatos relacionados disponibles para los mensajes estándar no consumidos en una cola de mensajes sin consumir, puede volver a llevar los mensajes a sus colas de origen. La regeneración de colas de letras sin salida reduce la facturación de llamadas a la API mediante el procesamiento por lotes de los mensajes mientras los mueve.

La tarea de reimpulsión utiliza Amazon SQSSendMessageBatch,ReceiveMessage, yDeleteMessageBatchAPI en nombre del usuario para volver a generar los mensajes. Por lo tanto, todos los mensajes redirigidos se consideran mensajes nuevos con un nuevomessageid,enqueueTimey el periodo de retención. El precio de la regeneración de colas de cartas sin salida utiliza el número de llamadas a la API invocadas y facturas según elPrecios de Amazon SQS.

De forma predeterminada, la regeneración de colas de letras muertas mueve los mensajes de una cola de letras sin salida a una cola de origen. Sin embargo, también puede configurar cualquier otra cola estándar como destino de reconducción. Además, puede configurar la velocidad de reconducción para establecer la velocidad a la que Amazon SQS mueve los mensajes. Para obtener instrucciones sobre cómo configurar una reunidad de cola de letras sin salida mediante la consola de Amazon SQS, consulteConfiguración de una cola de mensajes fallidos de (consola).

nota

Amazon SQS admite la redireccionamiento de colas de mensajes fallidos solo para las colas estándar en la consola de Amazon SQS.

Amazon SQS no admite el filtrado y la modificación de mensajes mientras los vuelve a expulsar de la cola de mensajes sin salida.

Una tarea de regeneración de colas de letras sin salida puede ejecutarse un máximo de 36 horas. Amazon SQS admite un máximo de 100 tareas de redireccionamiento activas por cuenta.

Solución de problemas de las colas de mensajes fallidos

En algunos casos, las colas de mensajes fallidos de Amazon SQS no siempre se comportan según lo previsto. En esta sección se proporciona información general sobre los problemas comunes y se muestra cómo resolverlos.

La visualización de mensajes con la consola podría hacer que los mensajes se movieran a una cola de mensajes fallidos

Amazon SQS cuenta la visualización de un mensaje en la consola con la política de redireccionamiento de la cola correspondiente. Por tanto, si ve un mensaje en la consola el número de veces especificado en la política de redireccionamiento de la cola correspondiente, el mensaje se enviará a la cola de mensajes fallidos de dicha cola.

Para configurar este comportamiento, puede elegir una de las siguientes opciones:

  • Aumentar la configuración Maximum Receives de la política de redireccionamiento de la cola correspondiente.

  • Evitar visualizar los mensajes de la cola correspondiente en la consola.

Los valores de NumberOfMessagesSent y NumberOfMessagesReceived para una cola de mensajes fallidos no coinciden

Si envía manualmente un mensaje a una cola de mensajes fallidos, la métrica NumberOfMessagesSent lo captura. Sin embargo, si se envía un mensaje a una cola de mensajes fallidos como consecuencia de un intento fallido de procesamiento, esta métrica no lo captura. Por tanto, es posible que los valores de NumberOfMessagesSent y NumberOfMessagesReceived sean diferentes.

Para obtener información sobre cómo crear y configurar una cola de letras sin salida, vuelva a utilizar la consola de Amazon SQS

Tenga en cuenta que la redireccionamiento de la cola de mensajes fallidos requiere que establezca los permisos adecuados para que Amazon SQS reciba mensajes de la cola de mensajes fallidos y envíe mensajes a la cola de destino. En caso de que los permisos sean insuficientes, la regeneración de la cola de letras sin salida a la cola de origen no inicia la regeneración de mensajes y puede fallar la tarea. Puede ver el estado de la tarea de redireccionamiento de mensajes para solucionar los problemas e intentarlo de nuevo.