@crvouga/mockingbird-service-sqs

中文文档
3.11.0发布于 2026/11/11MITTypeScriptES Module构建来源已验证近 30 天下载 1.5万

具有能见度的有状态的亚马逊SQS模拟器,FIFO订购,分解,分批,再驱动.

中文使用文档
文档目录7 节
  1. 安装
  2. 使用量
  3. 投票时间长
  4. 未知的操作
  5. 管理和确定性控制
  6. 故意不模拟
  7. API 密码

@crvouga/ mockingbird-service-sqs (中文(简体) )

本地模拟器。 真正的API合同. 部分 嘲笑鸟。 。 。 .

AWS SDK v3 的状态亚马逊SQS模拟器. 它模拟了标准的和FIFO队列,消息属性,能见度和收件手柄,分批,去重复,清除锁,和不与AWS联系而重新驱动的死字母.

安装

npm install -D @crvouga/mockingbird-service-sqs

仅限无害环境管理。 节点22+或Bun 1.2+.

使用量

点 SQS_ENDPOINT_URL 或 AWS SDK 软件 endpoint 选项。 接受Fixture SigV4证书.

import {
  GetQueueUrlCommand,
  ReceiveMessageCommand,
  SendMessageCommand,
  SQSClient,
} from "@aws-sdk/client-sqs"
import { createServer } from "@crvouga/mockingbird-service-sqs/server"

// Test setup: start the emulator with a seeded queue and point the SDK's endpoint at it.
const server = await createServer({
  queues: [{ name: "jobs", attributes: { VisibilityTimeout: "30" } }],
})
const sqs = new SQSClient({
  endpoint: server.url,
  region: "us-east-1",
  credentials: { accessKeyId: "fixture", secretAccessKey: "fixture" },
})

// Application code: the SQS SDK calls it already makes.
const { QueueUrl } = await sqs.send(new GetQueueUrlCommand({ QueueName: "jobs" }))
await sqs.send(new SendMessageCommand({ QueueUrl, MessageBody: JSON.stringify({ job: "resize" }) }))
const { Messages } = await sqs.send(new ReceiveMessageCommand({ QueueUrl }))
console.log(Messages?.[0]?.Body) // {"job":"resize"}

await server.close()

所支持的操作有: CreateQueet, ListQueets, Get QueeUrl, DevedQueet, SetQueet 属性, Get 属性, TagQueet, UntagQueet, ListQueetes, ListDeadlete ResourceQueets, SendMessage, ReceptMessage, DreadMessage, DevedMessageBatch, ChangeMessage Visicity, ChangeMessibility Batch,和purgeQue. 接收最大消息,能见度超时,等待时间,系统属性选择,以及消息属性选择. 被注入的共享时钟控制能见度已过期并重新驱动而无睡眠.

每个条目的蝙蝠声回答 : DeleteMessageBatch 财务报告和审定财务报表 ChangeMessageVisibilityBatch 列出每个条目 Successful 或者说 Failed (处理从未发布的队列失败为 ReceiptHandleIsInvalid 其余的则仍然成功。 以一个被取代的手柄删除,这个手柄来自之前再次收到的信件,但作为AWS文档在不删除信件的情况下成功. ListQueues 过滤器由 QueueNamePrefix 页面 MaxResults 财务报告和审定财务报表 NextToken。 。 。 . DeleteQueue 减少队列及其消息. SetQueueAttributes 验证和替换给定的属性,然后得到它们的使用.

投票时间长

一个空的 ReceiveMessage 为 WaitTimeSeconds (0至20),或队列的 ReceiveMessageWaitTimeSeconds 当呼叫省略时; WaitTimeSeconds: 0 从不等待。 等待是在模拟器的时钟上测量的,所以它保持不变:

  • 等待期间发送的信息( E)SendMessage,一个批, POST /__admin/messages)或可见(ChangeMessageVisibility 0, 到期的延迟或能见度超时)发布所持请求, 请求用它回答 ApproximateReceiveCount 1. 联合国.
  • 在一个活钟上(一个服务堆),等待是真实的。 在被冷冻的时钟上,它持续到测试在等待时间前将时钟提前(clock.advance(3000) 或者说 POST /__admin/clock),然后回答没有 Messages。 。 。 .
  • 虚拟时间 :virtualTime: true,参见 Admin 控件) 等用在命名空间时钟上,同时不睡觉.
  • 一个在持有时断开连接的客户端会停止等待直到收到任何信息,因此没有留下任何信息被隐藏. 等待回答时删除了队列 AWS.SimpleQueueService.NonExistentQueue。 。 。 .
  • createServer({ longPoll: false }) (或 createRuntime)保留依赖它的套房的旧即时答案.

有人要求每25毫秒实时投票一次.

证据: 短票和长票 编辑 接收信件参考,从文件中执行(未观察到SQS直播). WaitTimeSeconds 20岁以上 InvalidParameterValue页:1.

未知的操作

一个 X-Amz-Target 在查找任何队列前, 不拒绝模拟器回答, 因为 400 UnknownOperationException (单位:千美元){"__type":"UnknownOperationException","message":"Unknown operation Nope"}),从不作为缺失的队列. 存在但没有模型化的SQS业务(AddPermission, (中文(简体) ), RemovePermission, (中文(简体) ), StartMessageMoveTask, (中文(简体) ), CancelMessageMoveTask, (中文(简体) ), ListMessageMoveTasks) 与信件获得相同的类型 <Operation> is an Amazon SQS operation this emulator does not implement.,因此除了队列缺失之外,还有一个操作缺失.

最好的猜测,不是甲骨文验证: AWS JSON 1.0 协议 报告一项未确认的行动为: __type 命名失败,此模拟器使用 UnknownOperationException 在此 repo 使用中命名其他 AWS 模拟器。 准确 __type 现场SQS发送(可能是 com.amazon.coral.service#UnknownOperationException 未观测到窗体; SDK 客户端在名称空间之前脱去 #,因此它们看到相同的错误名称.

管理和确定性控制

  • GET /__admin/queues 显示队列深度; GET /__admin/messages?queue=… 曝光本地原始消息.
  • POST /__admin/messages 安装固定装置; POST /__admin/messages/:id/receive-count 设置再驱动状态; POST /__admin/messages/:id/duplicate 使飞行中的信息可以立即传送.
  • POST /__admin/queues/:name/drain 从解剖学上来说,排出一队.
  • 错误预设为 throttled 和一发子弹 unavailable;通用断层可以延迟或复制调用层的收件.

共享运行时间供应重置,时钟,日记,时间线,度量衡,断层,和命名空间隔离. 选择一个命名空间通过 x-mockingbird-namespace, (中文(简体) ), /__admin/ns/<name>,或SigV4存取键映射.

故意不模拟

上面列出的表面以外的操作( 排队权限和信件移动任务回答) UnknownOperationException),IAM政策评价,服务器侧加密,生产吞吐量和尺寸限制超过1 MiB信息限制,AWS仪表板,以及计费等没有被模拟. 队列缺失错误使用遗留 AWS.SimpleQueueService.NonExistentQueue 代码,而不是 QueueDoesNotExist 命名较新的 SDKs 映射它; GetQueueUrl 用于删除的队列失败.

API 密码

  • SqsAPI, (中文(简体) ), SqsAPIOptions, (中文(简体) ), SqsSeedQueueAWS JSON 处理器和固定装置.
  • SqsMessage, (中文(简体) ), SqsMessageAttribute, (中文(简体) ), SqsQueue:状态类型.
  • createRuntime, (中文(简体) ), SqsRuntime, (中文(简体) ), SqsRuntimeOptions:满口口鸟跑.
  • SQS_NAMESPACE, (中文(简体) ), SQS_PRESETS, (中文(简体) ), accessKeyCredential:常数与控制.
  • document, (中文(简体) ), operationIds, (中文(简体) ), supportedOperationIds: 生成了 OpenAPI 元数据.
  • createServer, (中文(简体) ), SqsServerOptions, (中文(简体) ), DEFAULT_PORT, (中文(简体) ), serveTarget 从 ./server:节点HTTP适配器和CLI集成.

官方预言: 亚马逊 SQS API 参考。 。 。 .

版本与发布记录

@crvouga/mockingbird-service-sqs 共发布 38 个版本,首次发布于 2026/09/23;过去 12 个月发布了 38 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
3.11.0latest2026/11/11今天
3.10.62026/11/038 天前
3.10.52026/11/038 天前
3.10.42026/11/038 天前
3.10.32026/11/038 天前
3.10.22026/11/038 天前

关于 @crvouga/mockingbird-service-sqs 的常见问题

@crvouga/mockingbird-service-sqs 是什么?

具有能见度的有状态的亚马逊SQS模拟器,FIFO订购,分解,分批,再驱动.

如何安装 @crvouga/mockingbird-service-sqs?

在项目目录运行 npm install @crvouga/mockingbird-service-sqs,或使用 pnpm add / yarn add / bun add。它还提供命令行工具 mockingbird-sqs,可以用 npx mockingbird-sqs 直接运行。

@crvouga/mockingbird-service-sqs 支持 TypeScript 吗?

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

@crvouga/mockingbird-service-sqs 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@crvouga/mockingbird-service-sqs 可以商用吗?

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

@crvouga/mockingbird-service-sqs 的下载量有多少?

根据 npm 官方下载统计,@crvouga/mockingbird-service-sqs 在 2026/10/11 – 2026/11/09 这 30 天内被下载 14,643 次,日均约 488 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@crvouga/mockingbird-service-sqs 还在维护吗?

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