Solucionar problemas de mensajes no devueltos en una llamada a la API de Amazon ReceiveMessage 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.

Solucionar problemas de mensajes no devueltos en una llamada a la API de Amazon ReceiveMessage SQS

En los siguientes temas se describen las causas más comunes por las que no se puede devolver un mensaje de Amazon SQS a los consumidores y cómo solucionarlas. Para obtener más información, consulte ¿Por qué no puedo recibir mensajes de mi cola de Amazon SQS? en la guía del AWS Knowledge Center.

Cola vacía

Para determinar si una cola está vacía, utiliza un sondeo largo para llamar a la ReceiveMessageAPI. También puedes usar las ApproximateNumberOfMessagesDelayed CloudWatch métricas ApproximateNumberOfMessagesVisibleApproximateNumberOfMessagesNotVisible, y. Si todos los valores de las métricas se establecen en 0 durante varios minutos, la cola se considera vacía.

Se ha alcanzado el límite en vuelo

Si utiliza sondeos prolongados y si se supera el límite de vuelo de la cola (20 000 para el FIFO, 120 000 para el estándar de forma predeterminada), Amazon SQS no devolverá los mensajes de error que superen los límites de la cuota.

Retraso del mensaje

Si la cola de Amazon SQS está configurada como una cola de retraso o los mensajes se enviaron con temporizadores de mensajes, los mensajes no estarán visibles hasta que finalice el tiempo de retraso. Para comprobar si una cola está configurada como cola de retrasos, utilice el DelaySeconds atributo GetQueueAttributesAPI o desde la consola de colas situada en Plazo de entrega. Comprueba la ApproximateNumberOfMessagesDelayed CloudWatch métrica para saber si algún mensaje se retrasa.

El mensaje está en vuelo

Si un consumidor diferente ha sondeado el mensaje, el mensaje estará en movimiento o será invisible durante el tiempo de espera de visibilidad. Es posible que las encuestas adicionales arrojen una recepción vacía. Comprueba la CloudWatch métrica ApproximateNumberOfMessagesVisible para saber el número de mensajes que están disponibles para ser recibidos. En el caso de las colas FIFO, si un mensaje con el identificador del grupo de mensajes está en vuelo, no se devolverán más mensajes a menos que lo elimines o pase a ser visible. Esto se debe a que el orden de los mensajes se mantiene a nivel de grupo de mensajes en una cola FIFO.

Método de sondeo

Si utiliza un sondeo breve (los WaitTimesegundos son 0), Amazon SQS toma muestras de un subconjunto de sus servidores y devuelve los mensajes únicamente de esos servidores. Por lo tanto, es posible que no reciba los mensajes aunque estén disponibles para recibirlos. Las solicitudes de sondeo posteriores devolverán los mensajes.

Si utiliza un sondeo prolongado, Amazon SQS sondea todos los servidores y envía una respuesta después de recopilar al menos un mensaje disponible y hasta el número máximo especificado. Si el valor de ReceiveMessage WaitTimeSegundos es demasiado bajo, es posible que no reciba todos los mensajes disponibles.