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.
Sondeo corto y largo de Amazon SQS
Amazon SQS proporciona sondeo corto y sondeo largo para recibir mensajes de una cola. De forma predeterminada, las colas usan sondeo corto.
consondeo corto, elReceiveMessage
consulta únicamente un subconjunto de servidores (basado en una distribución aleatoria ponderada) para buscar mensajes que están disponibles para incluir en la respuesta. Amazon SQS envía la respuesta de inmediato, incluso si la consulta no ha encontrado ningún mensaje.
consondeo largo, elReceiveMessage
solicita consulta a todos los servidores para buscar mensajes. Amazon SQS envía una respuesta después de recopilar al menos un mensaje disponible, hasta el número máximo de mensajes especificado en la solicitud. Amazon SQS envía una respuesta vacía solo si caduca el tiempo de espera de la encuesta.
En las siguientes secciones se explican los detalles de los sondeos cortos y largos.
Temas
Consumo de mensajes mediante sondeo corto
Cuando se consumen mensajes de una cola mediante sondeo corto, Amazon SQS muestrea un subconjunto de sus servidores (en función de una distribución aleatoria ponderada) y devuelve mensajes solo de esos servidores. Por tanto, una solicitud ReceiveMessage
determinada podría no devolver todos los mensajes. Sin embargo, si tiene menos de 1 000 mensajes en la cola, una solicitud posterior devolverá sus mensajes. Si sigue consumiendo mensajes de sus colas, Amazon SQS muestrea todos sus servidores y se reciben todos los mensajes.
En el siguiente diagrama se muestra el comportamiento de sondeo corto de los mensajes devueltos de una cola estándar después de que uno de los componentes del sistema realice una solicitud de recepción. Amazon SQS muestrea varios de sus servidores (en gris) y devuelve los mensajes A, C, D y B de estos servidores. El mensaje E no se devuelve en esta solicitud concreta, pero se devuelve en una solicitud posterior.

Consumo de mensajes mediante sondeo largo
Cuando el tiempo de espera delReceiveMessage
La acción de la API es mayor que 0,sondeo largoestá en vigor. El tiempo máximo de espera de sondeo largo es de 20 segundos. El sondeo largo ayuda a reducir el costo de uso de Amazon SQS al eliminar el número de respuestas vacías (cuando no hay ningún mensaje disponible para unReceiveMessage
solicitud) y las falsas respuestas vacías (cuando los mensajes están disponibles en la cola, pero no se incluyen en una respuesta). Para obtener información acerca de cómo habilitar el sondeo largo para una cola nueva o existente mediante la consola de Amazon SQS, consulte elConfiguración de los parámetros de cola (consola). Para obtener las prácticas recomendadas, consulte Configuración del sondeo largo.
El sondeo largo ofrece los siguientes beneficios:
-
Reduzca las respuestas vacías al permitir que Amazon SQS espere hasta que haya un mensaje disponible en una cola antes de enviar una respuesta. A menos que la conexión agote el tiempo de espera, la respuesta a la solicitud
ReceiveMessage
contiene al menos uno de los mensajes disponibles, hasta el número máximo de mensajes especificado en la acciónReceiveMessage
. En casos excepcionales, es posible que recibas respuestas vacías incluso cuando una cola sigue conteniendo mensajes, especialmente si especificas un valor bajo para elReceiveMessageWaitTimeSeconds
parámetro. -
Reduzca las respuestas vacías falsa al consultar todos los servidores de Amazon SQS (en lugar de un subconjunto de ellos).
-
Devolución de mensajes en cuanto estén disponibles.
Para obtener información acerca de cómo confirmar que una cola está vacía, consulteConfirmar que una cola está vacía.
Diferencias entre el sondeo corto y el sondeo largo
El sondeo corto se produce cuando el parámetro WaitTimeSeconds
de una solicitud ReceiveMessage
está establecido en 0
de una de las dos formas siguientes:
-
La llamada a
ReceiveMessage
estableceWaitTimeSeconds
en0
. -
La llamada a
ReceiveMessage
no estableceWaitTimeSeconds
y el atributo de colaReceiveMessageWaitTimeSeconds
está establecido en0
.