Senden und Empfangen von Nachrichten 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.

Senden und Empfangen von Nachrichten in Amazon SQS

JavaScript code example that applies to Node.js execution

Dieses Node.js-Codebeispiel zeigt:

  • Senden von Nachrichten in einer Warteschlange

  • Empfangen von Nachrichten in einer Warteschlange

  • Löschen von Nachrichten in einer Warteschlange

Das Szenario

In diesem Beispiel wird eine Reihe von Node.js-Modulen zum Senden und Empfangen von Nachrichten verwendet. Die Module Node.js verwenden das SDK für JavaScript zum Senden und Empfangen von Nachrichten mithilfe dieser Methoden desSQSClient-Klasse:

Weitere Informationen zu Amazon SQS SQS-Nachrichten finden Sie unterSenden einer Nachricht an eine Amazon SQS SQS-WarteschlangeundEmpfangen und Löschen einer Nachricht von einer Amazon SQS SQS-WarteschlangeimAmazon 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.

  • Erstellen Sie eine freigegebene Konfigurationsdatei mit Ihren Anmeldeinformationen. Weitere Informationen zum Bereitstellen einer Datei mit gemeinsam genutzten Anmeldeinformationen finden Sie unter Laden der Anmeldeinformationen in Node.js aus der Datei mit gemeinsamen -Anmeld.

  • Erstellen einer Amazon SQS-Warteschlange Ein Beispiel für die Erstellung einer Warteschlange finden Sie unter Verwenden von Warteschlangen in Amazon SQS.

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.

Senden einer Nachricht an eine 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_sendmessage.js. Stellen Sie sicher, dass Sie das SDK, wie zuvor dargestellt, konfigurieren. Dazu gehören das Herunterladen der erforderlichen Clients und Pakete. Erstellen Sie ein JSON-Objekt, das die erforderlichen Parameter für Ihre Nachricht enthält, einschließlich URL der Warteschlange, an die Sie die Nachricht senden möchten. In diesem Beispiel enthält die Nachricht Details über ein Buch auf einer Belletristik-Bestsellerliste. Diese umfassen den Titel, den (die) Autor(in) und die Anzahl der Wochen, die es auf der Liste steht.

Rufen Sie die SendMessageCommand-Methode auf. Die Callback-Funktion gibt eine eindeutige ID für die Nachricht zurück.

Anmerkung

ErsetzenSQS_QUEUE_URLMit der URL der SQS-Warteschlange.

// Import required AWS SDK clients and commands for Node.js import { SendMessageCommand } from "@aws-sdk/client-sqs"; import { sqsClient } from "./libs/sqsClient.js"; // Set the parameters const params = { DelaySeconds: 10, MessageAttributes: { Title: { DataType: "String", StringValue: "The Whistler", }, Author: { DataType: "String", StringValue: "John Grisham", }, WeeksOn: { DataType: "Number", StringValue: "6", }, }, MessageBody: "Information about current NY Times fiction bestseller for week of 12/11/2016.", // MessageDeduplicationId: "TheWhistler", // Required for FIFO queues // MessageGroupId: "Group1", // Required for FIFO queues 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 SendMessageCommand(params)); console.log("Success, message sent. MessageID:", data.MessageId); 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_sendmessage.js

Diesen Beispielcode finden Sie unterhier auf GitHubaus.

Empfangen und Löschen von Nachrichten aus einer 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_receivemessage.js. Stellen Sie sicher, dass Sie das SDK, wie zuvor dargestellt, konfigurieren. Dazu gehören das Herunterladen der erforderlichen Clients und Pakete. Erstellen Sie ein JSON-Objekt, das die erforderlichen Parameter für Ihre Nachricht enthält, einschließlich URL der Warteschlange, von der Sie Nachrichten erhalten möchten. In diesem Beispiel geben die Parameter den Eingang aller Nachrichtenattribute sowie den Eingang von nicht mehr als zehn Nachrichten an.

Rufen Sie die ReceiveMessageCommand-Methode auf. Die Callback-Funktion gibt ein Array von Message-Objekten zurück, von dem Sie ReceiptHandle für jede verwendete Nachricht abrufen können, um diese Nachricht zu einem späteren Zeitpunkt zu löschen. Erstellen Sie ein weiteres JSON-Objekt, das die erforderlichen Parameter zum Löschen der Nachricht enthält. Dies sind die URL der Warteschlange und der ReceiptHandle-Wert. Rufen Sie die DeleteMessageCommand-Methode auf, um die erhaltene Nachricht zu löschen.

Anmerkung

Ersetzen undSQS_QUEUE_URLMit der URL der SQS-Warteschlange.

// Import required AWS SDK clients and commands for Node.js import { ReceiveMessageCommand, DeleteMessageCommand, } from "@aws-sdk/client-sqs"; import { sqsClient } from "./libs/sqsClient.js"; // Set the parameters const queueURL = "SQS_QUEUE_URL"; //SQS_QUEUE_URL; e.g., 'https://sqs.REGION.amazonaws.com/ACCOUNT-ID/QUEUE-NAME' const params = { AttributeNames: ["SentTimestamp"], MaxNumberOfMessages: 10, MessageAttributeNames: ["All"], QueueUrl: queueURL, VisibilityTimeout: 20, WaitTimeSeconds: 0, }; const run = async () => { try { const data = await sqsClient.send(new ReceiveMessageCommand(params)); if (data.Messages) { var deleteParams = { QueueUrl: queueURL, ReceiptHandle: data.Messages[0].ReceiptHandle, }; try { const data = await sqsClient.send(new DeleteMessageCommand(deleteParams)); console.log("Message deleted", data); } catch (err) { console.log("Error", err); } } else { console.log("No messages to delete"); } return data; // For unit tests. } catch (err) { console.log("Receive Error", err); } }; run();

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

node sqs_receivemessage.js

Diesen Beispielcode finden Sie unterhier auf GitHubaus.