Anunciamos
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
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
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
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