Einrichten der Zeitbeschränkung für die Sichtbarkeit inAmazon SQS - AWS SDK for Java 1.x

Version AWS SDK for Java 1.x wurde am 31. Juli 2024 in den Wartungsmodus versetzt und wird end-of-supportam 31. Dezember 2025 verfügbar sein. Wir empfehlen Ihnen, auf den zu migrieren AWS SDK for Java 2.x, um weiterhin neue Funktionen, Verfügbarkeitsverbesserungen und Sicherheitsupdates zu erhalten.

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Einrichten der Zeitbeschränkung für die Sichtbarkeit inAmazon SQS

Wenn eine Nachricht in Amazon SQS empfangen wird, verbleibt sie bis zum Löschen in der Warteschlange. So wird ihr Erhalt sichergestellt. Eine empfangene, aber nicht gelöschte Nachricht erscheint erst nach Ablauf einer bestimmten Zeitbeschränkung für die Sichtbarkeit in nachfolgenden Anforderungen. Dadurch wird gewährleistet, dass die Nachricht nicht mehrmals empfangen wird, bevor sie verarbeitet und gelöscht werden kann.

Anmerkung

Bei Nutzung von Standard-Warteschlangen kann durch die Zeitbeschränkung für die Sichtbarkeit nicht garantiert werden, dass eine Nachricht mehrmals empfangen wird. Wenn Sie eine Standard-Warteschlange verwenden, achten Sie darauf, dass Ihr Code mit dem Fall umgehen kann, dass dieselbe Nachricht mehrmals eingeht.

Einrichten der Zeitbeschränkung für die Sichtbarkeit einer einzelnen Nachricht

Wenn Sie eine Nachricht erhalten haben, können Sie die Zeitbescheinigung für die Sichtbarkeit durch Übergeben ihrer Empfangsnachricht in einerChangeMessageVisibilityRequestdie Sie an die AmazonSQS-Klasse weitergebenchangeMessageVisibility-Methode.

Importe

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

Auf GitHub finden Sie ein vollständiges Beispiel.

Einrichten der Zeitbeschränkung für die Sichtbarkeit mehrerer Nachrichten auf einmal

Sie können die Zeitbeschränkung für die Sichtbarkeit mehrerer Nachrichten auf einmal einrichten, indem Sie eine Liste mit ChangeMessageVisibilityBatchRequestEntry-Objekten erstellen. Dabei sollte jedes Objekt eine Zeichenfolge mit eindeutiger ID sowie eine Empfangsnachricht enthalten. Anschließend übergeben Sie die Liste der changeMessageVisibilityBatch-Methode der Amazon SQS-Client-Klasse.

Importe

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

Auf GitHub finden Sie ein vollständiges Beispiel.

Weitere Infos