我创建了一个PubSub主题的云函数,如果函数失败,是否要重试一次从pubsub发送消息?

问题描述 投票:0回答:1

我有一个函数,有一个简单的测试代码,比如。

    exports.helloPubSub = (event, context) => {
      const message = event.data
         ? Buffer.from(event.data, 'base64').toString()
         : 'Hello, World';
      console.log(context);
      throw new Error("Fail");
    };

当我向Pubsub发布一条消息时,函数失败了,我希望它将在600秒后再次调用相同的消息,因为pubsub订阅的确认截止日期设置为600秒.但它并没有像预期的那样工作,看起来就像它立即收到消息,尽管在云函数中失败。

根据文档。云函数在函数执行成功后会在内部提示消息。

google-cloud-platform google-cloud-functions publish-subscribe google-cloud-pubsub
1个回答
2
投票

你必须确保你已经启用了函数的重试。从 "重试后台函数 "文档 (重点是我的)。

云函数保证对事件源发出的每个事件至少执行一次后台函数。然而, 默认情况下,如果一个函数的调用因错误而终止,该函数将不会被再次调用,并且该事件将被放弃。. 当您在后台函数上启用重试时,Cloud Functions 将重试一个失败的函数调用,直到它成功完成或重试窗口(默认情况下为 7 天)到期。

您可以通过提供以下信息来启用重试 --retry 选项,或者在通过 gcloud 命令行工具创建函数时,或者在通过 Cloud Console 创建函数时,选中 "重试失败 "框。

当云函数失败并启用重试时,它将对消息进行回溯,从而使消息成为立即重新交付的候选对象。目前没有办法延迟重新交付,不过很快就会对PubSub进行修改,以便对该行为提供更多控制。

© www.soinside.com 2019 - 2024. All rights reserved.