Version AWS SDK für 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.
Long Polling für Amazon SQS Nachrichtenwarteschlangen aktivieren
Amazon SQS verwendet standardmäßig kurze Abfragen, bei denen nur eine Teilmenge der Server anhand einer gewichteten Zufallsverteilung abgefragt wird, um festzustellen, ob Nachrichten für die Antwort verfügbar sind.
Lange Abfragen tragen dazu bei, die Nutzungskosten zu senken, Amazon SQS indem die Anzahl der leeren Antworten reduziert wird, wenn keine Nachrichten als Antwort auf eine an eine Warteschlange gesendete ReceiveMessage Anfrage zur Verfügung stehen, und falsche Leerantworten vermieden werden. Amazon SQS
Anmerkung
Sie können eine lange Abfragefrequenz zwischen 1 und 20 Sekunden festlegen.
Aktivieren der Langabfrage beim Erstellen einer Warteschlange
Um lange Abfragen beim Erstellen einer Amazon SQS Warteschlange zu aktivieren, legen Sie das ReceiveMessageWaitTimeSeconds
Attribut für das CreateQueueRequestObjekt fest, bevor Sie die Methode der AmazonSQS-Klasse aufrufen. createQueue
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; } }
Das vollständige Beispiel finden Sie unter.
Aktivieren der Langabfrage für eine vorhandene Warteschlange
Sie können nicht nur die lange Abfrage beim Erstellen einer Warteschlange aktivieren, sondern sie auch für eine bestehende Warteschlange aktivieren, indem Sie die Methode SetQueueAttributesRequestvor ReceiveMessageWaitTimeSeconds
dem Aufrufen der AmazonSQS-Klasse aktivieren. setQueueAttributes
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);
Das vollständige Beispiel finden Sie unter.
Aktivieren von Langabfragen beim Nachrichteneingang
Sie können lange Abfragen beim Empfang einer Nachricht aktivieren, indem Sie die Wartezeit in Sekunden für die Methode festlegen ReceiveMessageRequest, die Sie an die Methode der AmazonSQS-Klasse übergeben. receiveMessage
Anmerkung
Sie sollten sicherstellen, dass das Anfrage-Timeout des AWS Kunden größer ist als die maximale lange Abfragezeit (20 s), damit es bei Ihren receiveMessage
Anfragen nicht zu einem Timeout kommt, 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);
Das vollständige Beispiel
Weitere Infos
-
Amazon SQS Long Polling im Amazon SQS Entwicklerhandbuch
-
CreateQueuein der Amazon SQS API-Referenz
-
ReceiveMessagein der Amazon SQS API-Referenz
-
SetQueueAttributesin der Amazon SQS API-Referenz