Aktivieren von Langabfragen in Amazon SQS - AWS SDK for JavaScript

Helfen Sie uns, dasAWS SDK for JavaScriptVersion 3 (V3) -Dokumentation durch Feedback unter Verwendung derFeedbackLink oder erstellen Sie ein Problem oder ziehen Sie eine Anfrage anGitHubaus.

DieAWS SDK for JavaScriptReferenzhandbuch zur V3-API-Referenzbeschreibt ausführlich alle API-Operationen für dieAWS SDK for JavaScriptVersion 3 (V3).

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 in Amazon SQS

JavaScript code example that applies to Node.js execution

Dieses Node.js-Codebeispiel zeigt:

  • Aktivieren von Langabfragen für eine neuerstellte Warteschlange.

  • Aktivieren von Langabfragen für eine vorhandene Warteschlange.

  • Aktivieren von Langabfragen bei Nachrichtenempfang.

Das Szenario

Durch Langabfragen lässt sich die Anzahl an leeren Antworten reduzieren, da Amazon SQS eine bestimmte Zeit wartet, bis eine Nachricht in der Warteschlange vorhanden ist, bevor eine Antwort gesendet wird. Durch Langabfragen lassen sich außerdem falsch leere Antworten vermeiden, indem die Anfrage statt an eine Auswahl an Servern an alle Server gesendet wird. Zum Aktivieren von Langabfragen müssen Sie für empfangene Nachrichten eine Wartezeit ungleich Null angeben. Dies können Sie durch Festlegen des ReceiveMessageWaitTimeSeconds-Parameters einer Warteschlange oder des WaitTimeSeconds-Parameters für eine Nachricht bei deren Empfang vornehmen.

In diesem Beispiel wird eine Reihe von Node.js-Modulen zum Aktivieren von Langabfragen verwendet. Die Module Node.js verwenden das SDK für JavaScript, um Langabfragen mithilfe dieser Methoden desSQSClient-Klasse:

Weitere Informationen zu Amazon SQS SQS-Langabfragen finden Sie unterLangabfrageimAmazon Simple Queue Service-Entwicklerhandbuchaus.

Erforderliche Aufgaben

Zum Einrichten und Ausführen dieses Beispiels müssen Sie zunächst diese Aufgaben abschließen:

Richten Sie die Projektumgebung ein, um diese Node TypeScript-Beispiele auszuführen, und installieren Sie die erforderlichenAWS SDK for JavaScriptund Drittanbieter-Module. Folgen Sie den Anweisungen fürGitHubaus.

Anmerkung

DieAWS SDK for JavaScript(V3) ist in JavaScript geschrieben, daher werden diese Beispiele aus Gründen der Konsistenz in JavaScript dargestellt. JavaScript ist ein Supersatz von JavaScript, daher kann dieses Beispiel auch in JavaScript ausgeführt werden.

Wichtig

Diese Beispiele zeigen, wie Client-Serviceobjekte importiert/exportiert und mit ECMASCRIPT6 (ES6) befehligt werden.

  • Dies erfordert Node.js Version 13.x oder höher. Informationen zum Herunterladen der neuesten Version von Node.js finden Sie unterNode.js Downloads.aus.

  • Wenn Sie die CommonJS-Syntax verwenden möchten, finden Sie unter weitere InformationenJavaScript ES6/CommonJS-Syntaxaus.

Long Polling beim Erstellen einer Warteschlange aktivieren

Erstellen eineslibsErstellen Sie ein Modul Node.js mit dem DateinamensqsClient.jsaus. Kopieren Sie den folgenden Code und fügen Sie ihn ein, wodurch das Amazon SQS SQS-Clientobjekt erstellt wird. ErsetzenREGIONmit IhrerAWSRegion :

import { SQSClient } from "@aws-sdk/client-sqs"; // Set the AWS Region. const REGION = "REGION"; //e.g. "us-east-1" // Create SQS service object. const sqsClient = new SQSClient({ region: REGION }); export { sqsClient };

Diesen Beispielcode finden Sie unterhier auf GitHubaus.

Erstellen Sie ein Node.js-Modul mit dem Dateinamen sqs_longpolling_createqueue.js. Stellen Sie sicher, dass Sie das SDK, wie zuvor dargestellt, konfigurieren. Erstellen Sie ein JSON-Objekt, das die erforderlichen Parameter zum Erstellen einer Warteschlange enthält, einschließlich eines Wertes ungleich Null für den ReceiveMessageWaitTimeSeconds-Parameter. Rufen Sie die CreateQueueCommand-Methode auf. Die Langabfrage ist nun für die Warteschlange aktiviert.

Anmerkung

Ersetzen undSQS_QUEUE_URLMit der URL der SQS-Warteschlange.

// Import required AWS SDK clients and commands for Node.js import { CreateQueueCommand } from "@aws-sdk/client-sqs"; import { sqsClient } from "./libs/sqsClient.js"; // Set the parameters const params = { QueueName: "SQS_QUEUE_NAME", //SQS_QUEUE_URL; e.g., 'https://sqs.REGION.amazonaws.com/ACCOUNT-ID/QUEUE-NAME' Attributes: { ReceiveMessageWaitTimeSeconds: "20", }, }; const run = async () => { try { const data = await sqsClient.send(new CreateQueueCommand(params)); console.log("Success", data); return data; // For unit tests. } catch (err) { console.error(err, err.stack); } }; run();

Geben Sie zum Ausführen des Beispiels Folgendes bei der Eingabeaufforderung ein.

node sqs_longpolling_createqueue.js

Diesen Beispielcode finden Sie unterhier auf GitHubaus.

Aktivieren von Langabfragen für eine vorhandene Warteschlange

Erstellen eineslibsErstellen Sie ein Modul Node.js mit dem DateinamensqsClient.jsaus. Kopieren Sie den folgenden Code und fügen Sie ihn ein, wodurch das Amazon SQS SQS-Clientobjekt erstellt wird. ErsetzenREGIONmit IhrerAWSRegion :

import { SQSClient } from "@aws-sdk/client-sqs"; // Set the AWS Region. const REGION = "REGION"; //e.g. "us-east-1" // Create SQS service object. const sqsClient = new SQSClient({ region: REGION }); export { sqsClient };

Diesen Beispielcode finden Sie unterhier auf GitHubaus.

Erstellen Sie ein Node.js-Modul mit dem Dateinamen sqs_longpolling_existingqueue.js. Stellen Sie sicher, dass Sie das SDK, wie zuvor dargestellt, konfigurieren. Erstellen Sie ein JSON-Objekt, das die erforderlichen Parameter zum Festlegen der Attribute der Warteschlange enthält, einschließlich eines Wertes ungleich Null für dieReceiveMessageWaitTimeSeconds-Parameter und die URL der Warteschlange. Rufen Sie die SetQueueAttributesCommand-Methode auf. Die Langabfrage ist nun für die Warteschlange aktiviert.

Anmerkung

ErsetzenSQS_QUEUE_URLmit der URL der SQS-Warteschlange undReceiveMessageWaitTimeSecondsmit der Anzahl Sekunden, die vor dem Empfang der Nachricht gewartet wird.

// Import required AWS SDK clients and commands for Node.js import { SetQueueAttributesCommand } from "@aws-sdk/client-sqs"; import { sqsClient } from "./libs/sqsClient.js"; // Set the parameters const params = { Attributes: { ReceiveMessageWaitTimeSeconds: "20", }, QueueUrl: "SQS_QUEUE_URL", //SQS_QUEUE_URL; e.g., 'https://sqs.REGION.amazonaws.com/ACCOUNT-ID/QUEUE-NAME' }; const run = async () => { try { const data = await sqsClient.send(new SetQueueAttributesCommand(params)); console.log("Success", data); return data; // For unit tests. } catch (err) { console.error(err, err.stack); } }; run();

Geben Sie zum Ausführen des Beispiels Folgendes bei der Eingabeaufforderung ein.

node sqs_longpolling_existingqueue.js

Diesen Beispielcode finden Sie unterhier auf GitHubaus.

Langes Abfragen beim Nachrichteneingang aktivieren

Erstellen eineslibsErstellen Sie ein Modul Node.js mit dem DateinamensqsClient.jsaus. Kopieren Sie den folgenden Code und fügen Sie ihn ein, wodurch das Amazon SQS SQS-Clientobjekt erstellt wird. ErsetzenREGIONmit IhrerAWSRegion :

import { SQSClient } from "@aws-sdk/client-sqs"; // Set the AWS Region. const REGION = "REGION"; //e.g. "us-east-1" // Create SQS service object. const sqsClient = new SQSClient({ region: REGION }); export { sqsClient };

Diesen Beispielcode finden Sie unterhier auf GitHubaus.

Erstellen Sie ein Node.js-Modul mit dem Dateinamen sqs_longpolling_receivemessage.js. Stellen Sie sicher, dass Sie das SDK, wie zuvor dargestellt, konfigurieren. Erstellen Sie ein JSON-Objekt, das die erforderlichen Parameter zum Empfangen von Nachrichten enthält. Dazu gehören ein Wert ungleich Null für die WaitTimeSeconds-Eigenschaft und die URL der Warteschlange. Rufen Sie die ReceiveMessageCommand-Methode auf.

Anmerkung

ErsetzenSQS_QUEUE_URLmit der URL der SQS-WarteschlangeMaxNumberOfMessagesmit der maximalen Anzahl von Nachrichten undWaitTimeSecondsmit der Zeit zu warten (in Sekunden).

// Import required AWS SDK clients and commands for Node.js import { ReceiveMessageCommand } from "@aws-sdk/client-sqs"; import { sqsClient } from "./libs/sqsClient.js"; // Set the parameters const queueURL = "SQS_QUEUE_URL"; // SQS_QUEUE_URL const params = { AttributeNames: ["SentTimestamp"], MaxNumberOfMessages: 1, MessageAttributeNames: ["All"], QueueUrl: queueURL, WaitTimeSeconds: 20, }; const run = async () => { try { const data = await sqsClient.send(new ReceiveMessageCommand(params)); console.log("Success, ", data); return data; // For unit tests. } catch (err) { console.log("Error", err); } }; run();

Geben Sie zum Ausführen des Beispiels Folgendes bei der Eingabeaufforderung ein.

node sqs_longpolling_receivemessage.js

Diesen Beispielcode finden Sie unterhier auf GitHubaus.