O AWS SDK para Java 1.x entrou no modo de manutenção em 31 de julho de 2024 e chegará end-of-support
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á.
Habilitando a sondagem longa para filas de Amazon SQS mensagens
Amazon SQS usa uma pesquisa curta por padrão, consultando somente um subconjunto dos servidores, com base em uma distribuição aleatória ponderada, para determinar se alguma mensagem está disponível para inclusão na resposta.
A pesquisa longa ajuda a reduzir seu custo de uso, Amazon SQS reduzindo o número de respostas vazias quando não há mensagens disponíveis para retornar em resposta a uma ReceiveMessage solicitação enviada para uma Amazon SQS fila e eliminando respostas falsas vazias.
nota
Você pode definir uma frequência de sondagem longa de 1 a 20 segundos.
Habilitar sondagem longa ao criar uma fila
Para ativar a sondagem longa ao criar uma Amazon SQS fila, defina o ReceiveMessageWaitTimeSeconds
atributo no CreateQueueRequestobjeto antes de chamar o método da classe AmazonSQS. createQueue
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 ativar a sondagem longa ao criar uma fila, você também pode habilitá-la em uma fila existente ReceiveMessageWaitTimeSeconds
configurando o método da classe AmazonSQS SetQueueAttributesRequestantes de chamar. setQueueAttributes
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 ativar a sondagem longa ao receber uma mensagem definindo o tempo de espera em segundos no ReceiveMessageRequestque você fornece ao método da classe AmazonSQS. receiveMessage
nota
Você deve se certificar de que o tempo limite da solicitação do AWS cliente seja maior que o tempo máximo de pesquisa longa (20s) para que suas receiveMessage
solicitações não se esgotem enquanto aguarda o próximo evento de enquete!
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
-
Amazon SQS Sondagem longa no Guia do Amazon SQS Desenvolvedor
-
CreateQueuena Referência da Amazon SQS API
-
ReceiveMessagena Referência da Amazon SQS API
-
SetQueueAttributesna Referência da Amazon SQS API