Version AWS SDK for Java 1.x wurde am 31. Juli 2024 in den Wartungsmodus versetzt und wird end-of-support
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.
Aktivieren von Langabfragen fürAmazon SQS-Nachrichtenwarteschlangen
Amazon SQSVerwendungszweckeKurzabfragensendet standardmäßig anhand einer gewichteten zufälligen Verteilung Abfragen an eine Stichprobenmenge von Servern, um zu bestimmen ob neue Nachrichten für die Antwort verfügbar sind.
Lange Abfragen helfen, Ihre Kosten für die Verwendung zu senkenAmazon SQSindem Sie die Anzahl der leeren Antworten reduzieren, wenn keine Nachrichten vorhanden sind, die zurückgegeben werden können ReceiveMessage an eine gesendete AnfrageAmazon SQSWarteschlange und eliminiert falsche leere Antworten.
Anmerkung
Sie können eine Langabfragen-Häufigkeit von1-20 Sekundenaus.
Aktivieren der Langabfrage beim Erstellen einer Warteschlange
So aktivieren Sie lange Abfragen beim Erstellen einesAmazon SQSWarteschlange, setze dieReceiveMessageWaitTimeSeconds
Attribut auf derCreateQueueRequestObjekt vor dem Aufruf der AmazonSQS-KlassecreateQueue
-Methode.
Importe
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;
Code
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; } }
Auf GitHub finden Sie ein vollständiges Beispiel
Aktivieren der Langabfrage für eine vorhandene Warteschlange
Zusätzlich zur Aktivierung der Langabfrage bei der Erstellung einer Warteschlange können Sie sie auch für vorhandene Warteschlange aktivierenReceiveMessageWaitTimeSeconds
auf dersetQueueAttributesRequestbevor Sie die AmazonSQS-Klasse aufrufensetQueueAttributes
-Methode.
Importe
import com.amazonaws.services.sqs.model.SetQueueAttributesRequest;
Code
SetQueueAttributesRequest set_attrs_request = new SetQueueAttributesRequest() .withQueueUrl(queue_url) .addAttributesEntry("ReceiveMessageWaitTimeSeconds", "20"); sqs.setQueueAttributes(set_attrs_request);
Auf GitHub finden Sie ein vollständiges Beispiel
Aktivieren von Langabfragen beim Nachrichteneingang
Sie können die Langabfrage beim Erhalt einer Nachricht aktivieren, indem Sie die Wartezeit in Sekunden für dieReceiveMessageRequestdie Sie an die AmazonSQS-Klasse liefernreceiveMessage
-Methode.
Anmerkung
Sie sollten sicherstellen, dass dieAWSDas Anforderungstimeout des Kunden ist größer als die maximale Langabfragen-Zeit (20 s), sodass IhrreceiveMessage
Anfragen haben keine Auszeit, während Sie auf das nächste Umfrageereignis warten!
Importe
import com.amazonaws.services.sqs.model.ReceiveMessageRequest;
Code
ReceiveMessageRequest receive_request = new ReceiveMessageRequest() .withQueueUrl(queue_url) .withWaitTimeSeconds(20); sqs.receiveMessage(receive_request);
Auf GitHub finden Sie ein vollständiges Beispiel
Weitere Infos
-
Amazon SQSLangabfrageimAmazon SQSEntwicklerhandbuch
-
CreateQueueimAmazon SQS-API-Referenz
-
ReceiveMessageimAmazon SQS-API-Referenz
-
SetQueueAttributesimAmazon SQS-API-Referenz