O AWS SDK for Java 1.x chegou end-of-support em 31 de dezembro de 2025. Recomendamos que você migre para o AWS SDK for Java 2.x para continuar recebendo novos recursos, melhorias de disponibilidade e atualizações de segurança.
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á.
Habilitar sondagem longa para filas de mensagens do Amazon SQS
Por padrão, o Amazon SQS usa a sondagem curta, consultando apenas um subconjunto dos servidores (com base na distribuição aleatória ponderada) para determinar se as mensagens estão disponíveis para inclusão na resposta.
A sondagem longa ajuda a reduzir o custo de usar o Amazon SQS reduzindo o número de respostas vazias quando não há mensagens disponíveis para serem retornadas em resposta a uma solicitação ReceiveMessage enviada para uma fila do Amazon SQS e eliminando respostas vazias falsas.
nota
Você pode definir uma frequência de sondagem longa de 1 a 20 segundos.
Habilitar sondagem longa ao criar uma fila
Para habilitar a sondagem longa ao criar uma fila do Amazon SQS, defina o atributo ReceiveMessageWaitTimeSeconds no objeto CreateQueueRequest antes de chamar o método createQueue de classe do AmazonSQS.
Importações
import com.amazonaws.services.sqs.AmazonSQS; import com.amazonaws.services.sqs.AmazonSQSClientBuilder; import com.amazonaws.services.sqs.model.AmazonSQSException; import com.amazonaws.services.sqs.model.CreateQueueRequest;
Código da
final AmazonSQS sqs = AmazonSQSClientBuilder.defaultClient(); // Enable long polling when creating a queue CreateQueueRequest create_request = new CreateQueueRequest() .withQueueName(queue_name) .addAttributesEntry("ReceiveMessageWaitTimeSeconds", "20"); try { sqs.createQueue(create_request); } catch (AmazonSQSException e) { if (!e.getErrorCode().equals("QueueAlreadyExists")) { throw e; } }
Veja o exemplo completo
Habilitar sondagem longa em uma fila existente
Além de habilitar a sondagem longa ao criar uma fila, você também pode habilitá-la em uma fila existente definindo ReceiveMessageWaitTimeSeconds no SetQueueAttributesRequest antes de chamar o método setQueueAttributes de classe do AmazonSQS.
Importações
import com.amazonaws.services.sqs.model.SetQueueAttributesRequest;
Código da
SetQueueAttributesRequest set_attrs_request = new SetQueueAttributesRequest() .withQueueUrl(queue_url) .addAttributesEntry("ReceiveMessageWaitTimeSeconds", "20"); sqs.setQueueAttributes(set_attrs_request);
Veja o exemplo completo
Habilitar sondagem longa no recebimento da mensagem
Você pode habilitar a sondagem longa ao receber uma mensagem definindo o tempo de espera em segundos no ReceiveMessageRequest fornecido por você ao método receiveMessage de classe do AmazonSQS.
nota
É necessário verificar se o tempo limite da solicitação do cliente da AWS é maior que o tempo de sondagem longa máximo (20 segundos), de forma que as solicitações receiveMessage não expirem enquanto esperam o próximo evento de sondagem.
Importações
import com.amazonaws.services.sqs.model.ReceiveMessageRequest;
Código da
ReceiveMessageRequest receive_request = new ReceiveMessageRequest() .withQueueUrl(queue_url) .withWaitTimeSeconds(20); sqs.receiveMessage(receive_request);
Veja o exemplo completo
Mais informações
-
Sondagem longa do Amazon SQS no Guia do desenvolvedor do Amazon SQS
-
CreateQueue na Referência de API do Amazon SQS
-
ReceiveMessage na Referência de API do Amazon SQS
-
SetQueueAttributes na Referência de API do Amazon SQS