如何在 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