【发布时间】:2019-05-19 23:40:30
【问题描述】:
我已配置 EventGrid 订阅,以便在创建资源时为资源组中的事件启动 Web 挂钩调用。
成功处理网络挂钩调用,我返回 200 OK。为了保持幂等性,我将所有发生的事件与事件的id 一起存储在webhook_events 表中。通过id 检查任何新事件以查看它们是否存在于该表中。
Azure EventGrid 在返回 200 OK 后尝试从重试队列中删除事件。无论我以 200 OK 响应的速度有多快,EventGrid 都会可靠地重试发送。
我多次收到相同的事件(正如我所说,EventGrid 总是重试,因为它无法足够快地从重试队列中删除事件)。然而,这不是我问题的重点;相反,问题在于每次重试都会为我提供不同的id 事件。这意味着我无法从逻辑上确定事件的唯一性,并且我的应用程序代码没有以幂等方式执行。
尽管事件重试之间没有唯一标识符,我如何在我的应用程序和 Azure 之间保持幂等性?
【问题讨论】:
-
这可能不是 EventGrid 而是资源提供者(服务)。您可能想向拥有该提供商的 Microsoft Group 提出问题。
-
我认为可能是这样。我会联系 Azure SQL 数据库的团队,看看他们的实施是否有问题。
标签: azure azure-sql-database azure-eventhub azure-sql-server azure-eventgrid