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

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

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

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

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函数,那么如果函数崩溃,消息会被放入死信主题吗?

标签: google-cloud-platform terraform google-cloud-pubsub


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 2020-08-31
    • 2022-01-13
    • 2021-12-27
    • 2019-07-03
    • 2019-07-07
    • 2016-12-16
    • 2020-10-13
    • 2022-06-15
    • 2021-06-18
    相关资源
    最近更新 更多