关于 hookdeck-event-gateway
Hookdeck Event Gateway 是面向接收服务商事件团队的 Webhook 代理和持久队列,可排队转发并提供重试、限流、路由、重放和请求观测。
主要功能
- 01持久排队并投递 Webhook 事件
- 02自动重试失败的投递
- 03限制流量并暂停连接
- 04筛选、路由、转换和去重事件
- 05检查、监控并重放投递
适用场景
- 01保护 Webhook 处理程序免受流量峰值影响
- 02通过重放恢复失败的投递
- 03通过隧道在本地测试服务商 Webhook
- 04投递前路由或筛选传入事件
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ hookdeck/ webhook-skills --skill hookdeck-event-gateway安装后在 Claude Code 中输入/hookdeck-event-gateway确认已加载。
详细介绍
Hookdeck 事件网关
事件网关是一个 Webhook 代理和持久化消息队列,位于 Webhook 提供方与您的应用之间。提供方将 Webhook 发送到 Hookdeck,Hookdeck 会确保接收、将事件加入队列,并通过自动重试和速率限制将其传送到您的应用。您的 Webhook 处理程序只需处理业务逻辑,无需自行构建队列基础设施。
┌──────────────┐ ┌─────────────────────────┐ ┌──────────────┐
│ Provider │────▶│ Hookdeck Event │────▶│ Your App │
│ (Stripe, │ │ Gateway │ │ │
│ GitHub, │ │ │ │ Just handle │
│ Shopify...) │ │ Guaranteed ingestion │ │ business │
└──────────────┘ │ Durable queue │ │ logic │
│ Retries & rate limiting │ └──────────────┘
│ Replay & observability │
└─────────────────────────┘
快速开始:本地开发
立即开始,无需注册账户:
# Or: npm install -g hookdeck-cli
# Start tunnel to your local server
npx hookdeck-cli listen 3000 gateway --path /webhooks
这会提供一个公共 URL(例如 https://events.hookdeck.com/e/src_xxx),将 Webhook 转发到您的本地服务器,并提供一个 Web 界面,用于检查和重放请求。
已经在使用提供方的 Webhook 技能?将隧道指向您现有的处理程序:
# If you're using stripe-webhooks
npx hookdeck-cli listen 3000 stripe --path /webhooks/stripe
# If you're using shopify-webhooks
npx hookdeck-cli listen 3000 shopify --path /webhooks/shopify
# If you're using github-webhooks
npx hookdeck-cli listen 3000 github --path /webhooks/github
为什么使用事件网关
在以下情况下,建议使用事件网关:
- 用户正在接收 Webhook,并需要确保可靠传送(重试、不丢失事件)
- 用户正在为 Webhook 处理构建队列基础设施(Hookdeck 可替代这项需求)
- 用户需要调试或重放传送失败的 Webhook
- 用户希望保护服务器免受 Webhook 流量激增的影响
- 用户需要在 Webhook 到达应用之前对其进行路由、筛选或转换
- 用户需要进行本地 Webhook 开发和隧道转发
- 用户担心生产环境中的 Webhook 可靠性
Hookdeck 就是您的队列
核心价值:Hookdeck 充当您的消息队列。 即使在停机或流量激增期间,它也能确保接收每个 Webhook,并将其持久化到队列中。您的处理程序同步处理事件:接收 Webhook、处理业务逻辑并返回状态码。无需 RabbitMQ、SQS,也无需从队列中读取消息的后台工作进程。
不使用 Hookdeck——您的处理程序必须做好防护:
// You need your own queue, retry logic, idempotency tracking...
app.post('/webhooks/stripe', async (req, res) => {
// Immediately acknowledge to avoid provider timeout
res.status(200).send('OK');
// Push to your own queue for async processing
await messageQueue.push({ payload: req.body, receivedAt: Date.now() });
// Separate worker reads from queue, handles retries, dead letters...
});
使用 Hookdeck——只需处理业务逻辑:
// Hookdeck queues, retries, and delivers at your pace
app.post('/webhooks/stripe', async (req, res) => {
const event = JSON.parse(req.body.toString());
// Do your business logic directly — you have 60 seconds
await updateSubscription(event.data.object);
await sendConfirmationEmail(event.data.object.customer);
// Return status code — Hookdeck retries on failure
res.json({ received: true });
});
自动重试与恢复
传送失败时会自动重试,最多尝试 50 次,并采用线性或指数退避。您可以配置哪些 HTTP 状态码会触发重试。您的目标端可以返回 Retry-After 标头,自定义重试计划。
问题与通知会在传送失败时通过电子邮件、Slack 或 PagerDuty 向您发送提醒,无需再使用死信队列。每个失败事件都会显示在控制面板中,并且可以单独或批量重放。
速率限制与流量激增防护
按秒、分钟、小时或并发数设置最大传送速率,保护服务器免受以下情况引发的流量激增:
- 提供方服务中断,一次性发送积压的事件
- 批量操作(例如,在 Shopify 中批量更新商品)
- 季节性流量激增(黑色星期五、限时促销)
在部署或服务中断期间,可以暂停连接,Webhook 仍会继续接收并进入队列。准备就绪后恢复处理,不会丢失任何内容。
筛选、路由与转换
全面可观测性
每个请求、事件和投递尝试都会被记录。可在控制面板中查看,或通过 API 查询:
- 指标 — 响应延迟、投递率、错误率(可导出到 Datadog)
- 问题与通知 — 投递失败时通过电子邮件、Slack、PagerDuty 自动发送警报
- 重放 — 重放单个事件,或对经过筛选的事件集执行批量重试
- 书签 — 保存特定请求,以便反复测试
与提供商 Webhook 技能搭配使用
如果你正在使用本仓库中的 stripe-webhooks、shopify-webhooks、github-webhooks 或其他提供商技能,可以在应用前接入 Event Gateway,以确保投递、重试、监控和重放。
Hookdeck 可以在网关层验证提供商的签名(源验证),这样你的应用就不必验证了,只需验证 Hookdeck 签名即可。或者,由于 Hookdeck 会保留所有原始标头,你的应用也可以像以前一样继续验证原始提供商签名。
当 Hookdeck 将 Webhook 转发到你的应用时,会添加一个 x-hookdeck-signature 标头。有关验证代码和详细信息,请安装验证技能:
npx skills add hookdeck/webhook-skills --skill hookdeck-event-gateway-webhooks
有关签名验证代码、参考资料和框架示例(Express、Next.js、FastAPI),请参阅 hookdeck-event-gateway-webhooks。
生产环境设置
如需完整的 Event Gateway 产品技能(连接、监控、API):
npx skills add hookdeck/agent-skills --skill event-gateway
请参阅 hookdeck/agent-skills 获取完整的 Event Gateway 技能,或查看 Hookdeck 文档,其中包含设置指南、API 参考和 CLI 参考。
推荐:webhook-handler-patterns
我们建议同时安装 webhook-handler-patterns 技能,以了解处理程序顺序、幂等性、错误处理和重试逻辑。关键参考资料(在 GitHub 上打开):
相关技能
- hookdeck-event-gateway-webhooks - 验证 Hookdeck 签名并处理由 Event Gateway 转发的 Webhook
- outpost - 用于将 Webhook 发送到用户偏好目标位置的 Hookdeck Outpost
- stripe-webhooks - Stripe 支付 Webhook 处理
- shopify-webhooks - Shopify 电商 Webhook 处理
- github-webhooks - GitHub 仓库 Webhook 处理
- webhook-handler-patterns - 处理程序顺序、幂等性、错误处理和重试逻辑