Una respuesta a una solicitud GetMessages contiene la lista de mensajes con su carga útil, identificador de mensaje, hora de caducidad, timeout de visibilidad, recuento de entregas y receipt. El número máximo de mensajes que se pueden devolver en una respuesta es 20, pero el número real de mensajes devueltos depende del número de mensajes disponibles y de si la solicitud ha utilizado sondeo prolongado.
Los consumidores pueden "bloquear" un mensaje recuperado de la cola para que otro consumidor no pueda recuperar el mismo mensaje. Los mensajes se bloquean especificando un timeout de visibilidad. La API de Queue utiliza el parámetro visibilityInSeconds para definir este valor.
El timeout de visibilidad se puede definir en el nivel de cola al crear una cola o se puede especificar al consumir o actualizar mensajes. Si un consumidor tiene dificultades para procesar correctamente un mensaje, puede actualizar el mensaje para ampliar su invisibilidad. Si el timeout de visibilidad de un mensaje no se amplía y el consumidor no suprime el mensaje, vuelve a la cola.
Cuando lo consume, no es necesario que especifique el timeout de visibilidad. El timeout de visibilidad configurado para la cola se aplica a la solicitud. Cuando se crea una cola, el timeout de visibilidad por defecto es de 30 segundos. Si incluye el parámetro de timeout de visibilidad opcional en una solicitud, puede especificar un valor mínimo de 0 segundos y un valor máximo de 12 horas.
El uso de un timeout de visibilidad de 0 actúa eficazmente como una funcionalidad de inspección. Los mensajes recuperados de esta manera probablemente se entregarán a otro consumidor, ya que su visibilidad no cambia.
Recuento de entregas 🔗
Cada vez que se recupera un mensaje mediante una solicitud GetMessages o mediante el sondeo de la consola, su recuento de entregas aumenta. Si el recuento de entregas supera el máximo configurado de la cola, el mensaje se envía a la cola de mensajes con problemas de entrega.
Sondeo largo 🔗
Por defecto, una solicitud GetMessages utiliza sondeos largos. La solicitud espera los mensajes durante 30 segundos y, si transcurre el timeout y no hay ningún mensaje disponible para el consumo, devuelve una respuesta vacía. El sondeo largo es útil para evitar reintentos de bucle muy seguidos en respuestas vacías.
Los consumidores pueden cambiar este comportamiento incluyendo el parámetro timeoutInSeconds en su solicitud, que acepta valores de 0 a 30 segundos. La definición del valor timeoutInSeconds en 0 da como resultado una respuesta inmediata de la cola, tanto si hay mensajes disponibles como si no.