Google Cloud - Pub Sub Push Subscription 调用云函数重试

Posted

技术标签:

【中文标题】Google Cloud - Pub Sub Push Subscription 调用云函数重试【英文标题】:Google Cloud - Pub Sub Push Subscription invoked cloud function retry 【发布时间】:2021-06-18 23:52:59 【问题描述】:

Pub Sub 主题在收到新消息时调用云函数端点。

如果云函数内部发生任何错误,该函数将返回错误。

    PubSub 是否会在出错时重试交付? 未使用重试选项部署的云功能。想要对 Pub Sub 进行重试控制。

尝试了一个示例发布子主题触发的云函数,该函数总是在执行时返回错误,

**

import (
    "context"
    "errors"
)
func PushBackOffTest(ctx context.Context, m PubSubMessage) error 
    print(string(m.Data))
    return errors.New("always returns error")

**

但是云函数没有再次执行,只运行了一次。

ACK 截止时间为 600 秒。最大交付尝试 6 。从 G Cloud 控制台配置。

【问题讨论】:

【参考方案1】:

如果您希望在发生错误时重新传递事件,则需要通过选中“失败时重试”框在您的云函数中启用重试。否则,无论处理结果如何,Cloud Functions 都会确认从 Pub/Sub 收到的消息。选中此框会告诉 Cloud Functions 使用 Cloud Pub/Sub 的重试机制来处理未确认的消息。

【讨论】:

选中此框是告诉 Cloud Functions 使用 Cloud Pub/Sub 的重试机制来处理未确认的消息。这是否意味着,如果我提到最大交付尝试次数为 6,那么该功能只会重试 6 次? 您如何指定最大传递尝试次数? cloud.google.com/sdk/gcloud/reference/alpha/pubsub/…订阅创建/更新 但这不能在创建与 Pub/Sub 主题相关联的云函数时指定,对吗?您是否正在更新 Cloud Functions 创建的订阅以设置最大重试次数? 是的,它现在可用。如果在适当的重新传递次数后您没有看到消息转到您的死信主题,这可能意味着您没有set up subscribe permission on the subscription and publish permission on the dead letter topic。

以上是关于Google Cloud - Pub Sub Push Subscription 调用云函数重试的主要内容,如果未能解决你的问题,请参考以下文章

Google Cloud Pub/Sub - Cloud Function & Bigquery - 数据插入未发生

Google Cloud 上使用 Pub/Sub 的主/从模式

如何修改后台 Cloud Function 的 Google Cloud Pub/Sub 订阅确认截止日期

Google Cloud Pub/Sub 确认

Google Cloud Pub/Sub 获取或创建订阅

Google Cloud Functions 无法使用 Pub/Sub 死信主题