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á.
Definir tempo limite de visibilidade no Amazon SQS
Quando for recebida no Amazon SQS, uma mensagem permanecerá na fila até ser excluída para garantir o recebimento. Uma mensagem que foi recebida, mas não excluída, estará disponível em requisições subsequentes depois de um determinado tempo limite de visibilidade para ajudar a evitar que a mensagem seja recebida mais de uma vez antes de ser processada e excluída.
nota
Ao usar filas padrão, o tempo limite de visibilidade não é uma garantia em relação ao recebimento de uma mensagem duas vezes. Se você estiver usando uma fila padrão, verifique se o código pode processar o caso em que a mesma mensagem foi entregue mais de uma vez.
Definir o tempo limite de visibilidade da mensagem para uma única mensagem
Quando tiver recebido uma mensagem, você poderá modificar o tempo limite de visibilidade passando o identificador de recebimento em um ChangeMessageVisibilityRequest passado para o método changeMessageVisibility da classe do AmazonSQS.
Importações
import com.amazonaws.services.sqs.AmazonSQS; import com.amazonaws.services.sqs.AmazonSQSClientBuilder;
Código da
AmazonSQS sqs = AmazonSQSClientBuilder.defaultClient(); // Get the receipt handle for the first message in the queue. String receipt = sqs.receiveMessage(queue_url) .getMessages() .get(0) .getReceiptHandle(); sqs.changeMessageVisibility(queue_url, receipt, timeout);
Veja o exemplo completo
Definir o tempo limite de visibilidade da mensagem para várias mensagens de uma só vez
Para definir o tempo limite de visibilidade da mensagem para várias mensagens de uma só vez, crie uma lista de objetos ChangeMessageVisibilityBatchRequestEntry, cada um contendo uma string de ID exclusiva e um identificador de recebimento. Em seguida, passe a lista para o método Amazon SQS da classe de cliente do changeMessageVisibilityBatch.
Importações
import com.amazonaws.services.sqs.AmazonSQS; import com.amazonaws.services.sqs.AmazonSQSClientBuilder; import com.amazonaws.services.sqs.model.ChangeMessageVisibilityBatchRequestEntry; import java.util.ArrayList; import java.util.List;
Código da
AmazonSQS sqs = AmazonSQSClientBuilder.defaultClient(); List<ChangeMessageVisibilityBatchRequestEntry> entries = new ArrayList<ChangeMessageVisibilityBatchRequestEntry>(); entries.add(new ChangeMessageVisibilityBatchRequestEntry( "unique_id_msg1", sqs.receiveMessage(queue_url) .getMessages() .get(0) .getReceiptHandle()) .withVisibilityTimeout(timeout)); entries.add(new ChangeMessageVisibilityBatchRequestEntry( "unique_id_msg2", sqs.receiveMessage(queue_url) .getMessages() .get(0) .getReceiptHandle()) .withVisibilityTimeout(timeout + 200)); sqs.changeMessageVisibilityBatch(queue_url, entries);
Veja o exemplo completo
Mais informações
-
Tempo limite de visibilidade no Guia do desenvolvedor do Amazon SQS
-
SetQueueAttributes na Referência de API do Amazon SQS
-
GetQueueAttributes na Referência de API do Amazon SQS
-
ReceiveMessage na Referência de API do Amazon SQS
-
ChangeMessageVisibility na Referência de API do Amazon SQS
-
ChangeMessageVisibilityBatch na Referência de API do Amazon SQS