Google Cloud功能仅限Ack Pub/Sub成功

Geo*_*rey 11 google-cloud-pubsub google-cloud-functions

我们使用由Pub/Sub触发的云功能来确保发送电子邮件.有时,电子邮件服务需要很长时间才能响应,我们的云功能会在收到错误之前终止.由于该消息已被确认,我们的电子邮件将丢失.

当我们被调用时,云功能似乎会自动发送一条确认发布/订阅消息的ACK.有没有办法延迟ACK直到成功完成我们的代码?或者,是否有一种方法可以捕获超时并重新发送消息以进行传递?我们可以尝试别的吗?

Geo*_*rey 13

我从Google支持部门获悉,当Pub/Sub调用云功能时,他们目前不提供延迟ACK的方法.如果要在Pub/Sub中使用云功能,则需要自己处理错误情况.例如,您可以让您的云功能重新排列重试消息,并重试计数.

这似乎使得保证使用Pub/Sub和云功能执行变得不必要地困难.

  • 这是一个糟糕的设计决定。他们应该让云功能来确认消息。 (2认同)
  • 关于如何克服这个问题的最佳实践?我想过使用计时器并再次向主题发布相同的消息.还有什么更好的? (2认同)
  • 通过在触发器函数上设置`--retry`还有另一种方法.https://cloud.google.com/functions/docs/bestpractices/retries (2认同)

Nih*_*hil 6

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

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

  • 自从三年前提出这个问题以来,谷歌似乎增加了一些重试支持。我同意你的观点,答案已经改变。 (2认同)