Cuando un consumidor recibe un mensaje de una cola, este se vuelve temporalmente invisible para otros consumidores. Esto evita que varios consumidores procesen el mismo mensaje simultáneamente. La duración de esta invisibilidad se controla mediante el periodo de tiempo de espera de visibilidad.
Estados visible e invisible
Un mensaje en una cola de Simple Message Queue (SMQ, formerly MNS) tiene dos estados:
Visible: El mensaje está disponible en la cola. Cualquier consumidor puede recibirlo y procesarlo. Un consumidor es un servicio o aplicación que recibe y procesa mensajes.
Invisible: Un consumidor recibió el mensaje. Otros consumidores no pueden verlo ni recibirlo hasta que expire el periodo de tiempo de espera de visibilidad.
Ciclo de vida del mensaje
Un productor envía un mensaje a la cola. El mensaje es visible.
Un consumidor recibe el mensaje. El mensaje se vuelve invisible y comienza el periodo de tiempo de espera de visibilidad.
El consumidor procesa el mensaje y lo elimina de la cola.
Si el consumidor no elimina el mensaje antes de que expire el periodo de tiempo de espera de visibilidad, el mensaje vuelve a ser visible y lo puede recibir el mismo consumidor u otro diferente.
Periodo de tiempo de espera de visibilidad
El periodo de tiempo de espera de visibilidad es la duración entre el momento en que un consumidor recibe un mensaje y el momento en que dicho mensaje vuelve a ser visible para otros consumidores.
|
Parámetro |
Valor |
|
Valores válidos |
De 1 a 143,200 segundos (12 horas) |
|
Predeterminado |
30 segundos |
Recuperación ante fallos
Si un consumidor no logra procesar y eliminar un mensaje (debido a errores de la aplicación, bloqueos o fallos de conexión), el mensaje vuelve a ser visible automáticamente después de que expire el periodo de tiempo de espera de visibilidad. Entonces, otro consumidor puede tomarlo para reprocesarlo.
Un tiempo de espera de visibilidad demasiado alto retrasa la recuperación ante fallos. Por ejemplo, con un tiempo de espera de 12 horas, otros consumidores deben esperar las 12 horas completas antes de poder reprocesar el mensaje, incluso si el consumidor original falló inmediatamente después de recibirlo.
Establecer el periodo de tiempo de espera de visibilidad
Consola
Establezca el Visibility Timeout Period cuando cree o edite una cola. Para obtener más información, consulte Create a queue.
API
Llame a la operación ChangeMessageVisibility para ajustar el periodo de tiempo de espera de visibilidad de un mensaje ya recibido.