我发现两个来源间接引用了以下事实:使用 Firebase 创建 Google Cloud PubSub 订阅(使用 firebase-functions/v1
npm 软件包)时,Firebase 会自动创建 PubSub 主题和 PubSub 订阅:
- Cap your Firebase spending #1: Setting up a billing PubSub topic (YouTube)
- Firebase PubSub Trigger with Message Ordering (堆栈溢出)
因此,您不需要(例如)使用 $ gcloud pubsub topics create $TOPIC_NAME
和 $ gcloud pubsub subscriptions create $SUBSCRIPTION_NAME
来创建主题和订阅。
这种行为实际上记录在任何地方吗?
我想在 Firebase 之外创建我的 PubSub 订阅。这使我能够使用“死信主题”功能创建订阅,并使我能够在更大的 Google Cloud 项目中一致地记录我的主题和订阅。
是否可以在我的 Firebase 项目中部署云函数来监听在 Firebase 外部创建的订阅?
例如,我可以部署使用 @google-cloud/pubsub
npm 软件包而不是 firebase-functions/v1
的 Firebase 云函数吗?
最佳答案
Firebase 会自动创建 PubSub 主题和 PubSub 订阅,正如您在 public docs 中描述的流程和代码中看到的那样.
并且可以在 Firebase 项目中部署云函数来监听在 Firebase 外部创建的订阅。如果您想在 Firebase 中部署处理dead-letter-topics
的云函数,您必须按照以下步骤操作:
- 使用 gcloud 命令“gcloud pubsub topic”创建 pubsub 主题 创建”
- 创建一个 firebase 函数,触发器指向 主题创建于step 1
- 使用 firebase 部署该函数 命令“firebase部署——仅功能”
- 更新订阅 创建并启用死信功能。这也可以做到 使用gcloud command
- 对 firebase 进行必要的更新
函数并使用
firebasedeploy--onlyfunctions
重新部署该函数
更新订阅的原因是,使用 firebase cli
部署该函数时,可能会使用标准重试设置重新创建订阅,并导致禁用dead-letter-topic
。
因此每次功能部署后,您都需要相应更新订阅。
您可以在 firebase cli 中使用 postdeploy
Hook ,通过它您可以自动重新启用部署后的死信设置。请参阅以下步骤:
- 创建一个 postdeploy.sh 脚本,其中包含用于更新订阅的 gcloud 命令,如下所示。请参阅下面的示例,应针对变量进行修改。命令详细信息可查看here
gcloud pubsub subscriptions update projects/$GCLOUD_PROJECT/subscriptions/$SUBSCRIPTION_NAME --dead-letter-topic=$TOPICNAME --max-delivery-attempts=5
- 在
firebase.json
文件中引用上述postdeploy.sh
作为 post hook。下面的例子:
{
"functions": {
"postdeploy": "./postdeploy.sh",
"source": "functions"
}
}
- 使用常规 firebase 命令部署 firebase 函数
firebase deploy --only functions:XYZ
对于其他替代方案,请查看此 Article .
您可以部署使用 @google-cloud/pubsub
的 firebase 函数
关于firebase - Firebase 函数如何处理使用 Google Cloud 创建的 PubSub 主题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72666324/