Aktivieren von Langabfragen fürAmazon SQS-Nachrichtenwarteschlangen - AWS SDK for Java 1.x

Wir haben die kommende Version end-of-support für AWS SDK for Java (v1) angekündigt. Wir empfehlen Ihnen, auf AWS SDK for Java Version 2 zu migrieren. Termine, weitere Details und Informationen zur Migration finden Sie in der verlinkten Ankündigung.

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 dieReceiveMessageWaitTimeSecondsAttribut 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 aktivierenReceiveMessageWaitTimeSecondsauf 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 IhrreceiveMessageAnfragen 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