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_endpoint
的dead_letter_policy
,死信策略将有没有效果,因为您的 Cloud Function 将在收到 pubsub 消息后立即确认它,即使它崩溃。所以 HTTP 云功能是更好的选择。否则,您会在代码中发现任何错误并以编程方式在死信主题中发布消息:)
如果我使用HTTP Cloud函数,那么如果函数崩溃,消息会被放入死信主题吗?
【参考方案1】:
您不能直接在 PubSub 主题上插入函数并定义死信主题。 (如果您想在订阅中定义过滤器,同样的问题)。
解决方案是创建一个 HTTP 函数,并单独创建一个带有死信主题的推送订阅。 2个注意点:
注意安全部分,执行安全调用 PubSub 消息格式与 PubSub 触发的云函数和带有 PubSub 推送消息的 HTTP 云函数略有不同。此外,请记住,当同一条消息至少发生 5 次失败时,将使用死信主题。在 Cloud Functions 返回的第一个错误中不使用死信主题。
【讨论】:
以上是关于gcp 云函数 pub/sub 主题死信的主要内容,如果未能解决你的问题,请参考以下文章
Google Cloud - Pub Sub Push Subscription 调用云函数重试