Google Cloud Functions 仅在成功时确认 Pub/Sub(问题由 GCP 解决)

Google Cloud Functions to only Ack Pub/Sub on success (Problem resolved by GCP)

Google Cloud Functions 的早期版本在发生错误时的重试方面存在限制。此后,他们提供了解决此问题的增强功能。


我们正在使用由 Pub/Sub 触发的云功能来确保电子邮件的发送。有时电子邮件服务需要很长时间才能响应,并且我们的云功能在我们返回错误之前就终止了。由于消息已经被确认,我们的电子邮件丢失了。

云函数似乎在我们被调用时自动发送 ACK Pub/Sub 消息。有没有办法延迟 ACK 直到我们的代码成功完成?或者有没有办法捕捉超时并重新排队传递消息?我们还可以尝试其他方法吗?

我从 Google 支持那里听说,当 Pub/Sub 调用云函数时,他们目前不提供延迟 ACK 的方法。如果您想将云函数与 Pub/Sub 一起使用,您需要自己处理错误情况。例如,您可以让您的云函数使用重试计数重新排队消息以进行重试。

这似乎使保证 Pub/Sub 和云函数的执行变得不必要地困难。

这是一个问题,因为函数在调用时确认消息,即使它们崩溃,也会阻止使用新的 "dead-letter" 功能。

此外,它违反了文档。请参阅此代码示例后的注释: https://cloud.google.com/functions/docs/calling/pubsub#sample_code