Configurando uma sondagem longa no Amazon SQS - Amazon Simple Queue Service

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Configurando uma sondagem longa no Amazon SQS

Quando o tempo de espera da ação da API ReceiveMessage é maior do que 0, a sondagem longa está em vigor. O tempo máximo de espera de sondagem longa é de 20 segundos. A sondagem longa ajuda a reduzir os custos de uso do Amazon SQS eliminando o número de respostas vazias (quando não há mensagens disponíveis para uma solicitação ReceiveMessage) e respostas vazias falsas (quando mensagens estão disponíveis, mas não são incluídas em uma resposta). Para ter mais informações, consulte Sondagem curta e longa do Amazon SQS.

Para garantir o processamento ideal de mensagens, use as seguintes estratégias:

  • Na maioria dos casos, você pode definir o tempo de espera de ReceiveMessage como 20 segundos. Se 20 segundos for muito longo para seu aplicativo, defina um tempo de espera ReceiveMessage mais curto (no mínimo, 1 segundo). Se você não usa um AWS SDK para acessar o Amazon SQS, ou se configura AWS um SDK para ter um tempo de espera menor, talvez seja necessário modificar seu cliente Amazon SQS para permitir solicitações mais longas ou usar um tempo de espera menor para pesquisas longas.

  • Se você implementar a sondagem longa para várias filas, use um thread para cada fila, em vez de um único thread para todas as filas. O uso de um único thread para cada fila permite que seu aplicativo processe as mensagens em cada uma das filas conforme se tornam disponíveis, enquanto o uso de um único thread para sondar várias filas pode fazer com que seu aplicativo não possa processar as mensagens disponíveis em outras filas enquanto o aplicativo aguarda (até 20 segundos) por uma fila que não tem mensagens disponíveis.

Importante

Para evitar erros de HTTP, certifique-se de que o tempo limite da resposta HTTP para solicitações ReceiveMessage é maior do que o parâmetro WaitTimeSeconds. Para obter mais informações, consulte ReceiveMessage.