firebase - Firebase 函数如何处理使用 Google Cloud 创建的 PubSub 主题?

标签 firebase google-cloud-pubsub

我发现两个来源间接引用了以下事实:使用 Firebase 创建 Google Cloud PubSub 订阅(使用 firebase-functions/v1 npm 软件包)时,Firebase 会自动创建 PubSub 主题和 PubSub 订阅:

  1. Cap your Firebase spending #1: Setting up a billing PubSub topic (YouTube)
  2. 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的云函数,您必须按照以下步骤操作:

  1. 使用 gcloud 命令“gcloud pubsub topic”创建 pubsub 主题 创建”
  2. 创建一个 firebase 函数,触发器指向 主题创建于step 1
  3. 使用 firebase 部署该函数 命令“firebase部署——仅功能”
  4. 更新订阅 创建并启用死信功能。这也可以做到 使用gcloud command
  5. 对 firebase 进行必要的更新 函数并使用 firebasedeploy--onlyfunctions
  6. 重新部署该函数

更新订阅的原因是,使用 firebase cli 部署该函数时,可能会使用标准重试设置重新创建订阅,并导致禁用dead-letter-topic 。 因此每次功能部署后,您都需要相应更新订阅。

您可以在 firebase cli 中使用 postdeploy Hook ,通过它您可以自动重新启用部署后的死信设置。请参阅以下步骤:

  1. 创建一个 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/

    相关文章:

    在 react-native 和 firebase 3.1 中登录 Facebook

    ios - Swift Firebase保存/更新具有相同子值的多个父项

    python - 使用 Beam IO ReadFromPubSub 模块时,可以在 Python 中拉取带有属性的消息吗?不清楚是否支持

    google-cloud-platform - 创建 Google Pub/Sub 订阅期间出现无效推送端点错误

    android - 如何使用 firebase API 使用户密码过期?

    node.js - 如何保证最新的写入不会被之前的写入覆盖

    google-cloud-pubsub - Google Pub/Sub 的目的是什么?

    python - 实现由 GCS 触发的云功能以发布到 pubsub

    google-cloud-pubsub - com.google.cloud.pubsub.spi.v1.Publisher.publish 未将数据发送到 PubSub

    ios - 从 Firestore 加载图像并将其保存到 Swift 中的缓存