使用 pubsub 重试 Firebase 函数

Sha*_*dra 6 firebase google-cloud-pubsub google-cloud-functions

我正在将 firebase 函数与 pubsub 一起使用。每次有传入消息(推送)时都会调用这些函数,我正在考虑为这些函数合并重试机制。重试无效。示例函数如下所示。

export const helloWorldWithRetry = functions
    .runWith({
        timeoutSeconds: 300,
        memory: "512MB",
        vpcConnector: cloudFunctionOptions.connectors["abcd_data_connector"],
        vpcConnectorEgressSettings: "ALL_TRAFFIC",
        maxInstances: 1,
        failurePolicy: {
            retry: {},
        }
    })
    .region("asia-south1")
    .pubsub.topic("helloWorldPubSubWithRetry")
    .onPublish(async (message, context) => {

        console.log("----------- ATTEMPTING -------------")
        
        const eventAgeMs = Date.now() - Date.parse(context.timestamp);
        console.log(`The event timestamp is ${Date.parse(context.timestamp)} and eventAge is ${eventAgeMs}`)
        const eventMaxAgeMs = 60 * 1000;
        if (eventAgeMs > eventMaxAgeMs) {
            console.log(`Dropping event with age[ms]: ${eventAgeMs}`);
            return;
        }
        throw new Error("Error, Retry")
        
    });

Run Code Online (Sandbox Code Playgroud)

在这些情况下是否可以使用重试?文档说该消息ack在函数调用时立即出现

将消息放回队列或拉取方法是实现重试的唯一合乎逻辑的方法吗?

Rah*_*bal 0

这些函数可以配置为重试失败 -请参阅文档

并在代码中执行此操作 -

functions.runWith({failurePolicy: true}).foo.onBar(myHandler);
Run Code Online (Sandbox Code Playgroud)

因此,您需要做的就是确定可重试的异常类型并将其从函数中抛出。