gpt4 book ai didi

google-cloud-platform - 我已经从 Pub/Sub 主题创建了一个 Cloud Function,如果函数失败,我是否应该期望重试从 pub/sub 传递消息?

转载 作者:行者123 更新时间:2023-12-05 02:07:07 30 4
gpt4 key购买 nike

我有一个带有简单测试代码的函数,例如:

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

当我向 Pub/sub 发布消息时,该函数失败,我希望它会在 600 秒后再次调用相同的消息,因为 pub/sub 订阅的确认截止日期设置为 600 秒。但它并没有像预期的那样工作,尽管云功能出现故障,但它似乎会立即确认消息。

根据文档:Cloud Functions 在函数执行成功后在内部确认消息。

最佳答案

您必须确保已启用该函数的重试。来自"Retrying Background Functions" documentation (强调我的):

Cloud Functions guarantees at-least-once execution of a backgroundfunction for each event emitted by an event source. However, bydefault, if a function invocation terminates with an error, thefunction will not be invoked again, and the event will be dropped.When you enable retries on a background function, Cloud Functions willretry a failed function invocation until it completes successfully, orthe retry window (by default, 7 days) expires.

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

当 Cloud Functions 失败并启用重试时,它会拒绝消息,从而使消息成为重新传递的候选者。要延迟 nacked 消息的重新传递,您可以设置 RetryPolicy在订阅上。要更新订阅以使用重试策略,请在 Cloud Console Pub/Sub 部分中找到 Cloud Functions 创建的订阅的名称。然后,例如,您可以发出此 gcloud 命令以将最小重试延迟设置为 1 秒,将最大延迟设置为 60 秒:

gcloud pubsub subscriptions update <subscription name> --min-retry-delay=1s --max-retry-delay=60s

关于google-cloud-platform - 我已经从 Pub/Sub 主题创建了一个 Cloud Function,如果函数失败,我是否应该期望重试从 pub/sub 传递消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62149562/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com