如何在 Firebase Cloud Functions 中确认 PubSub 消息?

Posted

技术标签:

【中文标题】如何在 Firebase Cloud Functions 中确认 PubSub 消息?【英文标题】:How can you acknowledge a PubSub message in Firebase Cloud Functions? 【发布时间】:2020-05-05 02:13:05 【问题描述】:

我想知道确认 PubSub 消息(来自推送订阅者)的正确方法是什么,这是一个 Firebase 云功能。这是通过返回一个承诺来完成的吗?

import * as functions from 'firebase-functions'
import * as admin from 'firebase-admin'

export const listener = functions.pubsub.topic('new_members').onPublish(async (message:any) => 

let data = 
  name: 'Los Angeles',
  state: 'CA',
  country: 'USA'
;

// Will a PubSub message be acknowledged just by retuning a promise?
return await db.collection('cities').doc('LA').set(data);

感谢您的帮助。

【问题讨论】:

你为什么要问,它有效吗?以下是相应的文档:firebase.google.com/docs/functions/pubsub-events 【参考方案1】:

注意:Cloud Functions 会在函数调用成功后在内部确认 Pub/Sub 消息。启用重试后,Cloud Functions 可以使用相同的 Pub/Sub 消息重新调用在执行期间失败的函数。

https://cloud.google.com/functions/docs/calling/pubsub#functions_calling_pubsub-java

【讨论】:

【参考方案2】:

如果您的函数通过返回已解决的承诺成功完成,则消息将被确认。如果函数抛出异常或返回被拒绝的 Promise,那么 pubsub 将重试该消息。

【讨论】:

@doug-stevenson,它对 firebase 功能仍然有效吗?当functions.pubsub.topic..onPublish 返回被拒绝的承诺时,我没有看到重新传递消息的尝试 您能分享一些文档的链接或引用外部资源吗?因为这似乎不是真的。 具体来说,重试部分好像不对 @seza443 documentation 声明“注意:Cloud Functions 在函数调用成功后在内部确认消息。有关如何使用重试处理失败的信息,请参阅重试后台函数。”

以上是关于如何在 Firebase Cloud Functions 中确认 PubSub 消息?的主要内容,如果未能解决你的问题,请参考以下文章

如何将我的 Firebase 实时数据库转移到 Firebase Cloud Firestore

如何在 Firebase Cloud Functions 中确认 PubSub 消息?

Firebase Cloud Functions 如何确认 Cloud pub/sub

如何从 Cloud Function 调用其他 Cloud Firebase Functions

如何将我的 Firebase 实时数据库转移到 Firebase Cloud Firestore

如何在 PC 上本地测试 Cloud Functions for Firebase