关于 upstash-qstash-js
面向开发者的 QStash JavaScript SDK 技能指南,用于在无服务器和边缘运行时发布及管理 HTTP 消息,涵盖调度、队列、Webhook 验证和投递恢复。
主要功能
- 01发布 HTTP 消息
- 02安排延迟投递
- 03管理 FIFO 队列
- 04验证 Webhook 签名
- 05回调与死信处理
- 06消息去重
适用场景
- 01安排向端点发送通知
- 02按顺序处理队列消息
- 03验证传入的 QStash Webhook
- 04恢复投递失败的消息
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ upstash/ skills --skill upstash-qstash-js安装后在 Claude Code 中输入/upstash-qstash-js确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
advanced/callbacks.mddeduplication.mddlq.mdadvanced/multi-region/summary.mdverify-multi-region-setup.tsfundamentals/local-development.mdpublishing-messages.mdqueues-and-flow-control.mdschedules.mdurl-groups.mdverification/receiver.mdverification/platform-specific/nextjs.md详细介绍
QStash JavaScript SDK
QStash 是一种基于 HTTP 的消息传递和调度解决方案,适用于无服务器和边缘运行时。本技能可帮助你高效使用 QStash JS SDK。
捆绑的文档和源代码
在编写或调试 SDK 代码之前,请先查看 node_modules/@upstash/qstash/docs/ 中捆绑的文档,以及 node_modules/@upstash/qstash/src/ 中可读的 TypeScript 源代码。如果相关文件存在,请阅读并搜索;否则,请使用本技能中的参考资料。
何时使用本技能
适用于以下场景:
- 向端点或 URL 组发布 HTTP 消息
- 创建定时或延迟消息传递
- 管理可配置并行度的 FIFO 队列
- 验证来自 QStash 的传入 Webhook 签名
- 实现回调、DLQ 处理或消息去重
快速开始
安装 SDK
npm install @upstash/qstash
基本发布
import { Client } from "@upstash/qstash";
const client = new Client({
token: process.env.QSTASH_TOKEN!,
});
const result = await client.publishJSON({
url: "https://my-api.example.com/webhook",
body: { event: "user.created", userId: "123" },
});
核心概念
有关 QStash 的基本操作,请参阅:
验证传入消息:
- Receiver 验证 - 使用 Receiver 类进行核心签名验证
- 平台专用验证器:
- Next.js - App Router、Pages Router 和 Edge Runtime
高级功能:
- 回调
- 死信队列(DLQ)
- 消息去重
- 区域迁移和多区域支持
- 如有需要,可使用多区域环境变量设置验证脚本。运行时无需传入参数
平台支持
QStash JS SDK 可在多种平台上运行:
- Next.js(App Router 和 Pages Router)
- Cloudflare Workers
- Deno
- Node.js(v18+)
- Vercel Edge Runtime
- SvelteKit、Nuxt、SolidJS 及其他框架
关于 Workflow SDK 的说明: 如果要构建由多条 QStash 消息串联而成的复杂持久化工作流,可以考虑使用独立的 QStash Workflow SDK(
@upstash/workflow)。Workflow SDK 可帮助你编排多步骤流程,并提供自动状态管理、重试和容错能力。本技能文件介绍的是核心 QStash 消息 SDK。
最佳实践
- 始终使用 Receiver 类验证传入的 QStash 消息
- 使用环境变量保存令牌和签名密钥
- 根据使用场景设置适当的重试次数和超时时间
- 使用队列实现有序处理并控制并行度
- 为失败消息实现 DLQ 处理,以便进行恢复
评论
支持 Markdown