

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.

# Procesamiento y temporización de mensajes de Amazon SQS
<a name="best-practices-message-processing"></a>

En este tema se proporciona una guía completa sobre cómo optimizar la velocidad y la eficiencia de la gestión de mensajes en Amazon SQS, incluidas las estrategias para el procesamiento puntual de los mensajes, la selección del mejor modo de sondeo y la configuración del sondeo largo para mejorar el rendimiento.

****Temas****
+ [Procesamiento de los mensajes a tiempo en Amazon SQS](best-practices-processing-messages-timely-manner.md)
+ [Configuración del sondeo largo en Amazon SQS](best-practices-setting-up-long-polling.md)
+ [Uso del modo de sondeo apropiado en Amazon SQS](best-practices-using-appropriate-polling-mode.md)

# Procesamiento de los mensajes a tiempo en Amazon SQS
<a name="best-practices-processing-messages-timely-manner"></a>

La configuración del tiempo de espera de visibilidad depende de lo que tarde la aplicación en procesar y eliminar un mensaje. Por ejemplo, si la aplicación necesita 10 segundos para procesar un mensaje y establece el tiempo de espera de visibilidad en 15 minutos, debe esperar un tiempo relativamente largo para intentar procesar el mensaje de nuevo si el intento de procesamiento anterior produce un error. Asimismo, si la aplicación requiere 10 segundos para procesar un mensaje pero el usuario establece el tiempo de espera de visibilidad en solo 2 segundos, otro consumidor recibe un mensaje duplicado mientras que el consumidor original sigue trabajando en el mensaje.

Para asegurarse de que hay tiempo suficiente para procesar los mensajes, utilice una de las siguientes estrategias:
+ Si sabe (o puede calcular razonablemente) el tiempo que se tarda en procesar un mensaje, amplíe el *tiempo de espera de visibilidad* del mensaje al tiempo máximo que se tarda en procesar y eliminar el mensaje. Para obtener más información, consulte [Configuración del tiempo de espera de visibilidad](sqs-visibility-timeout.md#configuring-visibility-timeout).
+ Si no sabe cuánto tiempo tarda en procesarse un mensaje, cree un *latido* para su proceso consumidor: especifique el tiempo de espera de visibilidad inicial (por ejemplo, dos minutos) y, a continuación, mientras su consumidor siga trabajando en el mensaje, continúe ampliando el tiempo de espera de visibilidad en dos minutos cada minuto. 
**importante**  
El tiempo máximo de visibilidad es de 12 horas desde el momento en que Amazon SQS recibe la solicitud `ReceiveMessage`. La ampliación del tiempo de espera de visibilidad no restablece el máximo de 12 horas.  
Además, es posible que no pueda establecer el tiempo de espera de un mensaje individual en 12 horas completas (por ejemplo, 43 200 segundos), ya que la solicitud `ReceiveMessage` inicia el temporizador. Por ejemplo, si recibe un mensaje e inmediatamente establece el máximo de 12 horas mediante el envío de una llamada `ChangeMessageVisibility` con `VisibilityTimeout` igual a 43 200 segundos, es probable que se produzca un error. No obstante, utilizar un valor de 43 195 segundos funcionará a menos que exista un retraso significativo entre la solicitud del mensaje a través de `ReceiveMessage` y la actualización del tiempo de espera de visibilidad. Si su consumidor necesita más de 12 horas, considere usar Step Functions. 

# Configuración del sondeo largo en Amazon SQS
<a name="best-practices-setting-up-long-polling"></a>

Cuando el tiempo de espera de la acción de la API `[ReceiveMessage](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ReceiveMessage.html)` es superior a 0, se está realizando un *sondeo largo*. El tiempo máximo de espera de sondeo es de 20 segundos. Las encuestas prolongadas ayudan a reducir el costo de usar Amazon SQS al reducir el número de respuestas vacías (cuando no hay mensajes disponibles para una `ReceiveMessage` solicitud) y de respuestas falsas vacías (cuando hay mensajes disponibles pero no se incluyen en una respuesta). Para obtener más información, consulte [Sondeos cortos y largos de Amazon SQS](sqs-short-and-long-polling.md).

Para obtener un procesamiento óptimo de los mensajes, utilice las siguientes estrategias:
+ En la mayoría de los casos, puede establecer el tiempo de espera de `ReceiveMessage` en 20 segundos. Si 20 segundos es demasiado tiempo para su aplicación, establezca un tiempo de espera de `ReceiveMessage` más corto (1 segundo como mínimo). Si no utiliza un AWS SDK para acceder a Amazon SQS o si configura un AWS SDK para que tenga un tiempo de espera más corto, es posible que tenga que modificar su cliente de Amazon SQS para permitir solicitudes más largas o utilizar un tiempo de espera más corto para sondeos prolongados.
+ Si implementa el sondeo largo para varias colas, utilice un subproceso para cada cola en lugar de un solo subproceso para todas las colas. El uso de un único subproceso para cada cola permite que la aplicación procese los mensajes de cada una de las colas en cuanto estén disponibles, mientras que el uso de un único subproceso para sondear varias colas podría impedir que su aplicación procesara los mensajes disponibles en otras colas mientras la aplicación espera (hasta 20 segundos) para la cola que no tiene ningún mensaje disponible.

**importante**  
Para evitar errores HTTP, asegúrese de que el tiempo de espera de respuesta HTTP de las solicitudes `ReceiveMessage` sea mayor que el parámetro `WaitTimeSeconds`. Para obtener más información, consulte [ReceiveMessage](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ReceiveMessage.html).

# Uso del modo de sondeo apropiado en Amazon SQS
<a name="best-practices-using-appropriate-polling-mode"></a>
+ El sondeo largo le permite consumir mensajes de la cola de Amazon SQS tan pronto como estén disponibles. 
  + Para reducir el costo derivado del uso de Amazon SQS y reducir el número de recepciones vacías en una cola vacía (respuestas a la acción `ReceiveMessage` que no devuelven ningún mensaje), habilite el sondeo largo. Para obtener más información, consulte [Sondeo largo de Amazon SQS](sqs-short-and-long-polling.md).
  + Para aumentar la eficacia cuando se sondean varios subprocesos con varias recepciones, reduzca el número de procesos.
  + En la mayoría de los casos, el sondeo largo es preferible al sondeo corto.
+ El sondeo corto devuelve respuestas inmediatamente, incluso aunque la cola de Amazon SQS sondeada esté vacía. 
  + Para satisfacer los requisitos de una aplicación que espera respuestas inmediatas a la solicitud `ReceiveMessage`, utilice el sondeo corto.
  + El sondeo corto se factura igual que el sondeo largo.