GCP Pub/Sub 两次调用 Cloud Function

GCP Pub/Sub invoking Cloud Function twice

我有一个 Google 云函数订阅了一个主题。当需要向用户发送电子邮件时,我们的 Go API 会向主题发布一条消息。 GCF 创建电子邮件对象并将其发送到 Sendgrid。 问题是 90% 的时间,云函数被调用两次。

订阅的确认截止日期是 600 秒,并且在 GCF 内部确认的文档中明确说明。

我了解 PubSub 保证 at-least-once 交付和 GCF at-least-once 执行后台函数。但是,在大多数情况下都会发生这种情况,我很确定这也不对。

我 100% 确定发送 2 条消息的不是我们的 API。即使我从 GCP 控制台手动发布消息进行测试,云功能也会运行两次。

所以execution_id是一样的。两次执行都不到 1 秒。

所以我不确定发生了什么,谁负责这个重复?

我猜是 GCF 认为这两个执行具有相同的 ID?

有人知道如何解决这个问题吗?

我遇到了几乎相同的情况。我通过删除 Cloud Functions 的条目和 Cloud Pub/Sub 的订阅,然后重新创建它们来修复它。到目前为止似乎工作正常。