@azure/storage-queue

中文文档
12.32.0发布于 2026/09/24MITTypeScriptESM + CJS近 30 天下载 289.3万

Microsoft Azure 存储 JavaScript - 队列

中文使用文档
文档目录21 节
  1. 开始
  2. 目前得到支持的环境
  3. 先决条件
  4. 安装软件包
  5. 认证客户端
  6. 兼容性
  7. Java 脚本套装
  8. (简体中文)
  9. 关键概念
  10. 实例
  11. 导入软件包
  12. 创建队列服务客户端
  13. 在此账户中列出队列
  14. 创建新队列
  15. 向队列发送消息
  16. 皮克一个消息
  17. 处理信件
  18. 删除队列
  19. 解决问题
  20. 今后的步骤
  21. 捐款

用于 JavaScript 的 Azure 存储队列客户端库

Azure存储队列在应用程序组件之间提供云信息. 在为规模设计应用程序时,应用程序组件往往被去钩,以便它们能够独立地进行规模化. 队列存储为应用程序组件之间的通信提供同步消息,无论是在云中运行,还是在桌面上运行,还是在一个premies服务器上运行,还是在移动设备上运行. 队列存储还支持管理同步任务并构建进程工作流程.

这个工程在JavaScript中提供了一个客户端库,使得它更容易地消费Azure存储队列服务.

使用此软件包中的客户端库 :

  • 获取/设置队列服务属性
  • 创建/列表/删除队列
  • 发送/接收/Peek/ Clear/Update/删除队列信件

密钥链接 :

开始

目前得到支持的环境

看我们的 支助政策 更多细节.

先决条件

安装软件包

为 JavaScript 安装 Azure 存储队列客户端库的首选方法是使用 npm 包管理器. 键入下列终端窗口:

npm install @azure/storage-queue

认证客户端

Azure存储器支持几种认证方法. 为了与 Azure Quee 存储服务互动, 您需要创建存储客户端实例 QueueServiceClient 或者说 QueueClient 举个例子 见 用于创建 QueueServiceClient 学习更多关于认证.

Azure 活动目录

Azure Quee存储服务支持使用 Azure Active Directory来认证请求到它的API. 这个 @azure/identity 软件包提供了各种证书类型,应用程序可用来做到这一点。 请看 读取 @azure/identity 需要更多的细节和样本来启动.

兼容性

这个库与Node.js和浏览器兼容,并与LTS Node.js版本(QQ8.16.0)和Chrome,Firefox和Edge等最新版本进行验证.

网络工人

这个库要求某些DOM对象在浏览器中使用时可以全局取用,而网页工人默认不会提供. 您需要多填这些, 才能让这个图书馆在网络工作人员中工作 .

详情请参见我们 在网络工人中使用Azure SDK的文档

此库依赖于在网络工人使用时需要加载外部多填充的 DOM API :

节点J和浏览器之间的差异

节点(Node.js)和浏览器运行时间有差异. 启动此库时, 请注意 API 或 标有 "绝对是无处可逃" 或者说 "绝对是活在丛生"。 。 。 .

以下特性,界面,类或函数仅在Node.js中提供
  • 基于账户名称和账户密钥的共享密钥授权
    • StorageSharedKeyCredential
  • 共享访问签名( SAS) 生成
    • generateAccountSASQueryParameters()
    • generateQueueSASQueryParameters()

Java 脚本套装

要在浏览器中使用此客户端库,首先需要使用捆绑器. 关于如何做到这一点的详情,请参见我们 捆绑文件。 。 。 .

(简体中文)

你需要设置 跨欧林资源共享 用于浏览器的存储账户规则。 到 Azure 门户网站和 Azure 存储探索器, 找到您的存储账户, 为 blob/ queue/ file/ table 服务创建新的 CORS 规则 .

例如,您可以按照 CORS 设置创建调试程序。 但请根据生产环境的要求,精心定制设置.

  • 允许来源: *
  • 允许动词: DELETE, GET, HEAD, MERGE, POST, OPTIONS, PUT
  • 允许的标题 : *
  • 已曝光标题 : *
  • 最大年龄(秒):86400

关键概念

A 队列是 Azure 存储队列服务账户内发送/接收信件的数据存储器 连接客户端之间.

我们图书馆中与这些服务有关的关键数据类型是:

  • A 类 QueueServiceClient 代表连接( 通过 URL) 给定 存储账户 在Azure存储队列服务中,并提供API来操纵其队列. 它被认证为服务,可用于创建 QueueClient 对象,以及创建、删除、列出服务中的队列.
  • A 类 QueueClient 代表单人 队列 在存储账户。 它可用于操纵队列中的信息,例如发送,接收,并偷看队列中的信息.

实例

导入软件包

要使用客户端, 请导入软件包到您的文件中 :

import * as AzureStorageQueue from "@azure/storage-queue";

或者,有选择地仅导入所需的类型:

import { QueueServiceClient, StorageSharedKeyCredential } from "@azure/storage-queue";

创建队列服务客户端

这个 QueueServiceClient 需要队列服务的 URL 和访问证书 。 也可以选择接受 options 参数.

与 DefaultAzureCredential 从 @azure/identity 软件包

建议的即兴演奏方式a QueueServiceClient

设置 : 引用 - 授权使用 Azure Active 目录从客户端应用程序访问 blobs 和队列 - https://learn.microsoft.com/azure/storage/common/storage-auth-aad-app 互联网档案馆的存檔,存档日期2013-12-22

  • 注册新的 AAD 应用程序, 并允许代表登录用户访问 Azure 存储器

  • 允许在Azure门户网站上访问RBAC的Azure存储队列数据

  • 样本的环境设置

    • 从您的 AAD 应用程序的概览页面中,请注意 CLIENT ID 财务报告和审定财务报表 TENANT ID。在“证书和机密”标签中,创建一个机密,并将此记下.
    • 确保你有 AZURE_TENANT_ID, (中文(简体) ), AZURE_CLIENT_ID, (中文(简体) ), AZURE_CLIENT_SECRET 作为成功执行样本的环境变量(can liberation process.env.).
import { DefaultAzureCredential } from "@azure/identity";
import { QueueServiceClient } from "@azure/storage-queue";

const account = "<account>";
const credential = new DefaultAzureCredential();

const queueServiceClient = new QueueServiceClient(
  `https://${account}.queue.core.windows.net`,
  credential,
);

[注 -- -- 以上步骤只针对节点.js]

使用连接字符串

或者,你可以即时 QueueServiceClient 使用 fromConnectionString() 以全连接字符串作为参数的静态方法。 (连接字符串可以从Azure门户网站获得. [完全可以在 代码.Js运行]

import { QueueServiceClient } from "@azure/storage-queue";

const connectionString = "<connection string>";

const queueServiceClient = QueueServiceClient.fromConnectionString(connectionString);

与 StorageSharedKeyCredential

或者,你即兴表演 QueueServiceClient 带有 StorageSharedKeyCredential 路过 accountName 财务报告和审定财务报表 accountKey 作为论据。 (账户名和账户密钥的值可以从Azure门户网站获得. ) [完全可以在 代码.JS运行]

import { StorageSharedKeyCredential, QueueServiceClient } from "@azure/storage-queue";

// Enter your storage account name and shared key
const account = "<account>";
const accountKey = "<accountkey>";

// Use StorageSharedKeyCredential with storage account and account key
// StorageSharedKeyCredential is only available in Node.js runtime, not in browsers
const sharedKeyCredential = new StorageSharedKeyCredential(account, accountKey);

const queueServiceClient = new QueueServiceClient(
  `https://${account}.queue.core.windows.net`,
  sharedKeyCredential,
  {
    retryOptions: { maxTries: 4 }, // Retry options
    userAgentOptions: {
      userAgentPrefix: "BasicSample V10.0.0",
    }, // Customized telemetry string
  },
);

与 SAS Token 连接

还有... 你可以即兴表演 QueueServiceClient 带有共享访问签名(SAS). 您可以从 Azure 端口获得 SAS 令牌或使用 generateAccountSASQueryParameters()。 。 。 .

import { QueueServiceClient } from "@azure/storage-queue";

const account = "<account name>";
const sas = "<service Shared Access Signature Token>";
const queueServiceClient = new QueueServiceClient(
  `https://${account}.queue.core.windows.net?${sas}`,
);

在此账户中列出队列

使用 QueueServiceClient.listQueues() 函数以排列队列, 与新的 for-await-of 语法 :

import { QueueServiceClient } from "@azure/storage-queue";
import { DefaultAzureCredential } from "@azure/identity";

const account = "<account>";
const queueServiceClient = new QueueServiceClient(
  `https://${account}.queue.core.windows.net`,
  new DefaultAzureCredential(),
);

let i = 1;
for await (const item of queueServiceClient.listQueues()) {
  console.log(`Queue${i++}: ${item.name}`);
}

或者没有 for-await-of数字 :

import { QueueServiceClient } from "@azure/storage-queue";
import { DefaultAzureCredential } from "@azure/identity";

const account = "<account>";
const queueServiceClient = new QueueServiceClient(
  `https://${account}.queue.core.windows.net`,
  new DefaultAzureCredential(),
);

let i = 1;
const iterator = queueServiceClient.listQueues();
let { done, value } = await iterator.next();
while (!done) {
  console.log(`Queue${i++}: ${value.name}`);
  ({ done, value } = await iterator.next());
}

列行列上的完整样本请参见 样本/v12/类型标记/列表。 。 。 .

创建新队列

使用 QueueServiceClient.getQueueClient() 函数以创建新队列.

import { QueueServiceClient } from "@azure/storage-queue";
import { DefaultAzureCredential } from "@azure/identity";

const account = "<account>";
const queueServiceClient = new QueueServiceClient(
  `https://${account}.queue.core.windows.net`,
  new DefaultAzureCredential(),
);

const queueName = "<valid queue name>";
const queueClient = queueServiceClient.getQueueClient(queueName);
const createQueueResponse = await queueClient.create();
console.log(
  `Created queue ${queueName} successfully, service assigned request Id: ${createQueueResponse.requestId}`,
);

向队列发送消息

使用 sendMessage() 在队列中添加消息 :

import { QueueServiceClient } from "@azure/storage-queue";
import { DefaultAzureCredential } from "@azure/identity";

const account = "<account>";
const queueServiceClient = new QueueServiceClient(
  `https://${account}.queue.core.windows.net`,
  new DefaultAzureCredential(),
);

const queueName = "<valid queue name>";
const queueClient = queueServiceClient.getQueueClient(queueName);
// Send a message into the queue using the sendMessage method.
const sendMessageResponse = await queueClient.sendMessage("Hello World!");
console.log(
  `Sent message successfully, service assigned message Id: ${sendMessageResponse.messageId}, service assigned request Id: ${sendMessageResponse.requestId}`,
);

皮克一个消息

QueueClient.peekMessages() 允许在队列前查看一个或多个消息。 这个电话 并不妨碍其他代码访问被偷看的消息.

import { QueueServiceClient } from "@azure/storage-queue";
import { DefaultAzureCredential } from "@azure/identity";

const account = "<account>";
const queueServiceClient = new QueueServiceClient(
  `https://${account}.queue.core.windows.net`,
  new DefaultAzureCredential(),
);

const queueName = "<valid queue name>";
const queueClient = queueServiceClient.getQueueClient(queueName);
const peekMessagesResponse = await queueClient.peekMessages();
console.log(`The peeked message is: ${peekMessagesResponse.peekedMessageItems[0].messageText}`);

处理信件

消息分两步处理.

  • 第一通电话 queueClient.receiveMessages()。这使该队列中发来的其他代码读取信件隐形,默认时间为30秒.
  • 处理信件时,请拨 queueClient.deleteMessage() 带消息的 popReceipt。 。 。 .

如果由于硬件或软件故障,您的代码无法处理一个消息,这个双步进程可以确保您代码中的另一个实例可以得到相同的消息并再次尝试.

import { QueueServiceClient } from "@azure/storage-queue";
import { DefaultAzureCredential } from "@azure/identity";

const account = "<account>";
const queueServiceClient = new QueueServiceClient(
  `https://${account}.queue.core.windows.net`,
  new DefaultAzureCredential(),
);

const queueName = "<valid queue name>";
const queueClient = queueServiceClient.getQueueClient(queueName);
const response = await queueClient.receiveMessages();
if (response.receivedMessageItems.length === 1) {
  const receivedMessageItem = response.receivedMessageItems[0];
  console.log(`Processing & deleting message with content: ${receivedMessageItem.messageText}`);
  const deleteMessageResponse = await queueClient.deleteMessage(
    receivedMessageItem.messageId,
    receivedMessageItem.popReceipt,
  );
  console.log(
    `Delete message successfully, service assigned request Id: ${deleteMessageResponse.requestId}`,
  );
}

删除队列

import { QueueServiceClient } from "@azure/storage-queue";
import { DefaultAzureCredential } from "@azure/identity";

const account = "<account>";
const queueServiceClient = new QueueServiceClient(
  `https://${account}.queue.core.windows.net`,
  new DefaultAzureCredential(),
);

const queueName = "<valid queue name>";
const queueClient = queueServiceClient.getQueueClient(queueName);
const deleteQueueResponse = await queueClient.delete();
console.log(
  `Deleted queue successfully, service assigned request Id: ${deleteQueueResponse.requestId}`,
);

简单的完整实例 QueueServiceClient 假设值为 样本/v12/型号标注/弧度/克克克特.ts。 。 。 .

解决问题

允许伐木可能有助于发现有关失败的有用信息。 为了查看 HTTP 请求和回复的日志,设置 AZURE_LOG_LEVEL 环境变量改为 info。或者,可以在运行时拨打 setLogLevel 输入 @azure/logger数字 :

import { setLogLevel } from "@azure/logger";

setLogLevel("info");

今后的步骤

更多代码样本

捐款

如果您想为图书馆捐钱 请读一下 贡献指南 学习如何构建和测试密码.

另见 存储特定指南 关于为存储库设置测试环境的更多信息.

版本与发布记录

@azure/storage-queue 共发布 509 个版本,首次发布于 2018/12/13;过去 12 个月发布了 51 个版本。

版本发布日期距今
12.32.0latest2026/09/241 个月前
12.32.0-beta.1beta2026/08/043 个月前
12.31.02026/06/244 个月前
12.30.02026/06/055 个月前
12.31.0-beta.12026/05/095 个月前
12.30.0-alpha.20260310.1dev2026/03/117 个月前

其他发布通道:next → 12.28.0-beta.1,dev → 12.30.0-alpha.20260310.1,beta → 12.32.0-beta.1。

关于 @azure/storage-queue 的常见问题

@azure/storage-queue 是什么?

Microsoft Azure 存储 JavaScript - 队列

如何安装 @azure/storage-queue?

在项目目录运行 npm install @azure/storage-queue,或使用 pnpm add / yarn add / bun add。

@azure/storage-queue 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@azure/storage-queue 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@azure/storage-queue 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=22.0.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@azure/storage-queue 可以商用吗?

@azure/storage-queue 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@azure/storage-queue 的下载量有多少?

根据 npm 官方下载统计,@azure/storage-queue 在 2026/10/08 – 2026/11/06 这 30 天内被下载 2,893,236 次,日均约 96,441 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@azure/storage-queue 还在维护吗?

最新版本 12.32.0 发布于 2026/09/24(1 个月前);至今共发布 509 个版本,其中过去 12 个月发布了 51 个;首次发布于 2018/12/13。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。