消息未在云功能中得到确认

Messages are not getting acknowledged in cloud functions

我正在尝试将 google pubsub 与云功能结合使用,我的所有功能都运行良好,但我的消息没有得到确认

我做过这些事情:

1) 创建了一个话题

2) 创建了一个函数

3) 将函数的触发器设置为 google 云发布订阅

4) select 发布订阅主题

5) 设置节点版本为8

这是我的默认云函数:

/**
 * Triggered from a message on a Cloud Pub/Sub topic.
 *
 * @param {!Object} event Event payload.
 * @param {!Object} context Metadata for the event.
 */
exports.helloPubSub = (event, context) => {
  const pubsubMessage = event.data;
  console.log(Buffer.from(pubsubMessage, 'base64').toString());
};

它将为此主题创建 2 个订阅,一个是拉取,另一个是推送

正在调用我的云功能,但我的消息未得到确认。

根据docs

Note: Cloud Functions acks the message internally upon successful function execution. For information on how to handle failures using retries, see Retrying Background Functions.

所以函数应该自动确认它不起作用。

这个流程有什么问题。我做错了什么?

谢谢

如果您想尝试使用云 Pub/Sub 触发器编写、部署和触发后台云函数,那么以下文档页面会更好。

https://cloud.google.com/functions/docs/tutorials/pubsub

我认为你需要触发该功能。

gcloud pubsub topics publish YOUR_TOPIC_NAME --message YOUR_MESSAGE

您不需要为 pubsub 云函数显式创建订阅。

部署云函数并将其指向主题时,会自动创建订阅。

  1. 创建your-topic:

    gcloud pubsub topics create your-topic

  2. 部署指向 your-topic 的函数(这会自动创建一个订阅):

    gcloud functions deploy your-function --region=us-central1 --trigger-topic=your-topic --runtime=python37 --entry-point=main

运行 从包含您的 cloudfunction 代码的文件夹中部署命令。您可以更改 runtimeentry-point 以匹配您的用例。

您创建的任何二级订阅都没有消费者,因此消息不会被确认。此外,如果您的云功能出现故障,则可能无法确认消息。