Définition du délai de visibilité dansAmazon SQS - AWS SDK for Java 1. x

Nous avons annoncé la sortie prochaine end-of-support de AWS SDK for Java (v1). Nous vous recommandons de migrer vers la AWS SDK for Java version v2. Pour les dates, les détails supplémentaires et les informations sur la façon de migrer, reportez-vous à l'annonce associée.

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Définition du délai de visibilité dansAmazon SQS

Lorsqu'un message est reçu dans Amazon SQS, il demeure dans la file d'attente jusqu'à ce qu'il soit supprimé, afin de garantir la réception. Un message qui a été reçu, mais pas supprimé, est disponible dans les demandes suivantes après un délai de visibilité donné afin d'empêcher que le message ne soit reçu plusieurs fois avant d'être traité et supprimé.

Note

Lorsque vous utilisez les files d'attente standard, le délai de visibilité n'est pas une garantie que vous ne recevrez pas deux fois un même message. Si vous utilisez une file d'attente standard, assurez-vous que votre code gère le cas où le même message est remis plusieurs fois.

Définition du délai de visibilité de message pour un seul message

Lorsque vous avez reçu un message, vous pouvez modifier son délai de visibilité en transmettant son descripteur de réception dans un objetChangeMessageVisibilityRequestque vous passez à la classe AmazonSQS »changeMessageVisibilityMéthode.

Importations

import com.amazonaws.services.sqs.AmazonSQS; import com.amazonaws.services.sqs.AmazonSQSClientBuilder;

Code

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);

Veuillez consulter l'exemple complet sur GitHub.

Définition simultanée du délai de visibilité de message pour plusieurs messages

Pour définir simultanément le délai de visibilité de plusieurs messages, créez une liste d'objets ChangeMessageVisibilityBatchRequestEntry, contenant chacun une chaîne d'ID unique et un descripteur de réception. Transmettez ensuite la liste à la méthode changeMessageVisibilityBatch de la classe client Amazon SQS.

Importations

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;

Code

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);

Veuillez consulter l'exemple complet sur GitHub.

Plus d'informations