在 &Amazon SQS; 中管理可见性超时 - Amazon SDK for JavaScript
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

Amazon SDK for JavaScriptV3 API 参考指南详细描述了Amazon SDK for JavaScript版本 3 (V3) 的所有 API 操作。

从 2022 年 10 月 1 日起,Amazon SDK for JavaScript(v3) 将终止对 Internet Explorer 11(IE 11)的支持。有关详细信息,请参阅 Amazon SDK for JavaScript(v3) 中宣布终止对 Internet Explorer 11 的支持

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

在 &Amazon SQS; 中管理可见性超时

JavaScript code example that applies to Node.js execution

此 Node.js 代码示例演示:

  • 如何指定队列接收的消息不可见的时间间隔。

场景

在此示例中,使用了 Node.js 模块来管理可见性超时。Node.js 模块使用软件开发工具包用于 JavaScript 通过此方法来管理可见性超时SQS客户端类:

有关 Amazon SQS 可见性超时的更多信息,请参阅可见性超时中的Amazon Simple Sueue.

先决条件任务

要设置和运行此示例,您必须先完成以下任务:

重要

这些示例演示了如何使用 ECMAScript6 (ES6) 导入/导出客户端服务对象和命令。

更改可见性超时

创建libs目录并创建文件名为模块文件名为模块 Node.jssqsClient.js. 将以下代码复制并粘贴到其中,这将创建 Amazon SQS 客户端对象。Replace领域此处Amazon区域。

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 };

这个例子可以在以下网站找到下载内容:。此处 GitHub.

创建文件名为 sqs_changingvisibility.js 的 Node.js 模块。请确保按前面所示配置开发工具包。从队列接收消息。

从队列收到消息时,创建一个包含设置超时所需的参数的 JSON 对象,其中包括消息所在的队列的 URL、收到消息时返回的 ReceiptHandle,以及新的超时(以秒为单位)。调用 ChangeMessageVisibilityCommand 方法。

注意

替换和ACCOUNT_ID使用账户的 ID,和QUEUE_NAME使用队列的名称.

// Import required AWS SDK clients and commands for Node.js import { ReceiveMessageCommand, ChangeMessageVisibilityCommand, } from "@aws-sdk/client-sqs"; import { sqsClient } from "./libs/sqsClient.js"; // Set the parameters const queueURL = "https://sqs.REGION.amazonaws.com/ACCOUNT-ID/QUEUE-NAME"; // REGION, ACCOUNT_ID, QUEUE_NAME const params = { AttributeNames: ["SentTimestamp"], MaxNumberOfMessages: 1, MessageAttributeNames: ["All"], QueueUrl: queueURL, }; const run = async () => { try { const data = await sqsClient.send(new ReceiveMessageCommand(params)); if (data.Messages != null) { try { const visibilityParams = { QueueUrl: queueURL, ReceiptHandle: data.Messages[0].ReceiptHandle, VisibilityTimeout: 20, // 20 second timeout }; const results = await sqsClient.send( new ChangeMessageVisibilityCommand(visibilityParams) ); console.log("Timeout Changed", results); } catch (err) { console.log("Delete Error", err); } } else { console.log("No messages to change"); } return data; // For unit tests. } catch (err) { console.log("Receive Error", err); } }; run();

要运行示例,在命令提示符处,输入以下内容。

node sqs_changingvisibility.js

这个例子可以在以下网站找到下载内容:。此处 GitHub.