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
Temas
Cola vacía
Para determinar si una cola está vacía, utiliza un sondeo largo para llamar a la ReceiveMessage
API. También puedes usar las ApproximateNumberOfMessagesDelayed
CloudWatch métricas ApproximateNumberOfMessagesVisible
ApproximateNumberOfMessagesNotVisible
, 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
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 GetQueueAttributes
API 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.