mcpField
H
hookdeck-event-gateway

hookdeck-event-gateway

github.com/hookdeck云与 DevOps95214 次安装今天更新
代码仓库

关于 hookdeck-event-gateway

Hookdeck Event Gateway 是面向接收服务商事件团队的 Webhook 代理和持久队列,可排队转发并提供重试、限流、路由、重放和请求观测。

主要功能

  1. 01持久排队并投递 Webhook 事件
  2. 02自动重试失败的投递
  3. 03限制流量并暂停连接
  4. 04筛选、路由、转换和去重事件
  5. 05检查、监控并重放投递

适用场景

  1. 01保护 Webhook 处理程序免受流量峰值影响
  2. 02通过重放恢复失败的投递
  3. 03通过隧道在本地测试服务商 Webhook
  4. 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 上打开):

相关技能

评论

支持 Markdown