gcp 云函数 pub/sub 主题死信

Posted

技术标签:

【中文标题】gcp 云函数 pub/sub 主题死信【英文标题】:gcp cloud function pub/sub topic dead letter 【发布时间】:2021-10-16 06:15:24 【问题描述】:

我正在尝试使用 terraform 在 gcp 上实现以下目标。

    云函数侦听添加到发布/订阅主题的消息 添加消息后,将触发云功能 如果处理消息时出现错误,则将消息放入相应的死信队列。

我不确定如何为还包含死信策略的云功能创建订阅。目前我正在为云功能做以下事情,

resource "google_cloudfunctions_function" "brw-user-function-item-registered" 
 // details

  event_trigger 
    event_type = "google.pubsub.topic.publish"
    resource   = "brw-messages"
    failure_policy 
      retry = false
    
  

 // details     

但是,没有选项可以在 event_trigger 部分中指定死信策略。如果我创建一个单独的 google_pubsub_subscription 我不确定如何将端点提供给云功能。我查看了创建的内容及其实际上的端点,但是我不确定如何在 google_pubsub_subscription

中指定这些详细信息

【问题讨论】:

即使您可以使用terraform import,导入由您的云功能自动创建的google_pubsub_subscription ,然后为其分配一个具有相同push_config.push_endpointdead_letter_policy,死信策略将有没有效果,因为您的 Cloud Function 将在收到 pubsub 消息后立即确认它,即使它崩溃。所以 HTTP 云功能是更好的选择。否则,您会在代码中发现任何错误并以编程方式在死信主题中发布消息:) 如果我使用HTTP Cloud函数,那么如果函数崩溃,消息会被放入死信主题吗? 【参考方案1】:

您不能直接在 PubSub 主题上插入函数并定义死信主题。 (如果您想在订阅中定义过滤器,同样的问题)。

解决方案是创建一个 HTTP 函数,并单独创建一个带有死信主题的推送订阅。 2个注意点:

注意安全部分,执行安全调用 PubSub 消息格式与 PubSub 触发的云函数和带有 PubSub 推送消息的 HTTP 云函数略有不同。

此外,请记住,当同一条消息至少发生 5 次失败时,将使用死信主题。在 Cloud Functions 返回的第一个错误中不使用死信主题。

【讨论】:

以上是关于gcp 云函数 pub/sub 主题死信的主要内容,如果未能解决你的问题,请参考以下文章

来自发布/订阅主题的速率限制 GCP 云函数触发器

跨 Pub/Sub 订阅触发云函数

是否可以通过 Pub/Sub 主题上的消息子集触发云功能?

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

GCP Pub/Sub - 如何从 BQ 计划查询中检索状态

如何通过转发到死信主题来限制 Google Pub/Sub 交付尝试?