1

我的 SaaS 产品将事件通知发布为 webhook。这个问题是关于当我发布到 webhook url 时处理失败案例的。

如果没有从我发布事件数据的 URL 收到 200 OK 响应代码,我将该事件通知标记为失败并开始重试过程。目前,我将必须作为事件数据的一部分发送的数据的 ID 存储起来,并在每次重试时从数据库中获取它。

我就是想看看别人是怎么处理的?我能想到的另一件事是将实际有效负载(以 JSON 或 XML 格式)存储在数据库中,并在每次重试时发送。但是您希望事件接收器如何处理可能因此而出现的数据同步问题?

4

1 回答 1

2

听起来您需要让 webhook 接收器选择在他们向您的服务注册其端点时是否重新发布数据。我还强烈建议您提供清晰的文档,说明您的服务如何处理不同的响应代码。

通过电子邮件将同步问题通知端点管理员可能是值得的。这更令人高兴,因为他们也可以随时 ping 自己的服务或定期发布测试数据。

另外,请考虑一下:当您的服务失败时会发生什么。如果同步很重要,您的服务和端点如何解决该问题?

您没有为您发布的数据类型以及您担心的精确同步问题提供太多背景信息。你能分享更多吗?

编辑:这是MailChimp 处理此问题的方式。他们显然和你在同一条船上。

当您开启的事件发生时,我们将向您指定的 URL 发送 HTTP POST 请求。如果该 URL 不可用或响应时间过长(超过 15 秒),我们将取消请求并稍后重试。在 1 小时 15 分钟的过程中,以增加的间隔进行重试。随着我们开始收到用户的反馈,这些时间框架可能会有所调整。

对于每个事件,我们将根据该事件返回各种数据。下面是每个事件的示例数据 - 您也可以使用上面提到的 PostBin 工具轻松查看。一般来说,您会看到每个事件都有一个类型和一个fired_at 字段,以帮助您跟踪事件的类型并获取事件的时间戳(以格林威治标准时间!)。

于 2012-02-08T21:28:48.257 回答