# 在生产环境中运行送达 Webhook

> 验证、快速确认、稍后处理、去重、按时间排序并监控。让处理程序经受真实流量的检查清单。

更新日期：2026-07-09。难度：高级。作者：SMSMeteor。

## 要点

- 解析前在原始正文上验证签名。
- 数秒内确认，从队列异步处理。
- 按事件 ID 去重。
- 按 created_at 和状态优先级排序。

## 先验证

用端点密钥，对“时间戳、一个点号和原始正文”计算 HMAC，以恒定时间与 `X-Meteor-Signature` 中的值比较，并拒绝超过五分钟的时间戳。必须在解析前完成；重新序列化的正文不会匹配。

## 快速确认

你必须在 5 秒 内返回任意 2xx。不要在请求中执行实际工作：把事件写入队列或数据表，然后返回 200。内联更新三个系统的处理程序，会在其中一个系统变慢时超时，而重试只会让它更慢。

## 去重

重试会发生，共 24 小时内重试 6 次。每次尝试都带有相同事件 ID。用唯一索引保存已处理 ID，并把重复事件视为成功。这就是幂等处理的全部内容，只需一张表。

## 按时间排序

送达顺序不受保证，重放事件本来就会在数天后到达。按 `created_at` 和状态优先级保留最新状态：最终状态绝不能被已发送覆盖。如果只保存最后收到的事件，重放的已发送会撤销已送达。

## 监控与重放

针对自身 5xx 比例和超过两秒的处理延迟设置警报。控制面板会显示各端点成功率，并保留 30 天未送达事件；故障后先修复端点，再批量重放。可从控制面板轮换密钥；两个密钥会同时有效 24 小时，因此不会停机。

---
来源：[HTML 页面](https://smsmeteor.com/zh/guides/webhooks-in-production)。由 SMSMeteor 使用与页面相同的数据生成。[全站摘要](https://smsmeteor.com/zh/llms.txt)
