为幂等性保留 Stripe webhook 事件记录多长时间?

Posted

技术标签:

【中文标题】为幂等性保留 Stripe webhook 事件记录多长时间?【英文标题】:How long to keep Stripe webhook event record for idempotence? 【发布时间】:2021-09-16 10:48:26 【问题描述】:

我的应用实现了 Stripe 网络钩子。在处理完事件后,我会保存事件 ID 的记录,并在处理每个 webhook 之前检查这些记录。因此,根据 Stripe 文档最佳实践,我的应用目前是幂等的:https://stripe.com/docs/webhooks/best-practices

但是,我需要保留这些记录多长时间?我应该永远保留它们,还是可以在 30 天、6 个月、1 年等之后删除它们?

我将它们存储在 Mongo DB 中,数据只是 Stripe webhook 事件的 ID,因此收集数据看起来像几年后(我只听几个事件):

集合大小:2.73MB 文件总数:47183 索引总大小:1.51MB

最终这个集合会变得非常大,每次我查询它以检查最新的 webhook 时,查询都会变慢。但我想这需要很长时间才能真正发挥作用。

这里的软件最佳实践是什么?我正在编写一个要删除的 cron 14 天后,但我心想这是错的吗?

【问题讨论】:

【参考方案1】:

您无法检索超过 30 天的事件:https://stripe.com/docs/api/events/list,因此如果您需要内容,则应保留它们。

如果您需要最新的事件 ID,您应该存储它,或者在事件 ID 上建立索引,或者存储一个仅包含 datetime,event_id 的列表。

【讨论】:

我不需要这些消息的内容,因为我已经对他们告诉我的应用程序采取了行动。这更多是为了确保我永远不会收到事件的故障重新触发。如果 API 不会检索超过 30 天的事件,那么我想我可以假设它们也不会被意外发送到我的应用程序。

以上是关于为幂等性保留 Stripe webhook 事件记录多长时间?的主要内容,如果未能解决你的问题,请参考以下文章

什么叫幂等?如何实现幂等性?

支付接口的幂等性设计

如何保证接口的幂等性

如何保证接口的幂等性

分布式系统的接口幂等性设计

幂等性的作用及实现