Habilitar sondagem longa para filas de mensagens do Amazon SQS - AWS SDK for Java 1.x

Anunciamos o próximo end-of-support para AWS SDK for Java (v1). Recomendamos migrar para o AWS SDK for Java v2. Para saber as datas e receber detalhes adicionais e informações sobre como migrar, consulte o anúncio vinculado.

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 no GitHub.

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 no GitHub.

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 no GitHub.

Mais informações