从 Google Pub/Sub 调用 Google App Engine 端点

Posted

技术标签:

【中文标题】从 Google Pub/Sub 调用 Google App Engine 端点【英文标题】:Calling Google App Engine endpoint from Google Pub/Sub 【发布时间】:2021-10-03 04:28:39 【问题描述】:

我创建了一个指向 Google App Engine 端点的 Google Pub/Sub 推送订阅,但 GAE 没有收到任何内容。

消息正在发布(我可以在 Pub/Sub 控制台上看到),但从未确认。

端点 URL 应该是正确的,因为我公开了我的 GAE 端点并使用 Postman 进行了测试。

Google Pub/Sub 是否不支持调用 Google App Engine 端点? 还是我在这里遗漏了什么?

感谢有人可以帮助解决这个问题。

【问题讨论】:

【参考方案1】:

对于要确认的消息,这意味着它必须被订阅者接收。你是如何做到这一点的?我问是因为 GAE(至少是 GAE 标准)不支持流式传输,这意味着您不能无限期打开连接来监听来自 pubsub 的消息。

【讨论】:

嗨。抱歉解释不充分。我从 Google Pub/Sub GUI 创建了推送订阅。此推送订阅应该将发布的消息推送到 GAE 端点,但它没有。【参考方案2】:

是的,Google Pub/Sub 支持调用 Google App Engine 端点。我提到了这个documentation。

根据文档,我将 App Engine Flex Env​​ironment 与 Pub/Sub 推送订阅一起使用,并且能够获取从 Pub/Sub 发布到端点的消息。

您可以参考下面提到的步骤:

参考此document,使用 App Engine Flex Env​​ironment 创建一个应用程序。 将应用程序部署到 GCP。 应用部署所需的文件是模板文件夹内的 app.yaml、requirements.txt、main.py 和 index.html 文件。 文件夹结构:
Demo→
app.yaml
requirements.txt
main.py
templates→
    index.html

在 app.yaml 文件中提供 Pub/Sub 主题名称和令牌 ID(应与 Pub/Sub 推送端点令牌 ID 相同)。
env_variables:
    PUBSUB_TOPIC: your-topic
    PUBSUB_VERIFICATION_TOKEN: 1234abcd
在演示目录上运行 gcloud app deploy。 应用部署后,您将获得一个端点 URL,格式为:https://PROJECT_ID.REGION_ID.r.appspot.com 示例:https://mydemoproject.uc.r.appspot.com 创建 Pub/Sub 主题和订阅,并将交付类型设为 push。 我们需要提供一个推送端点,格式为:https://mydemoproject.uc.r.appspot.com/pubsub/push?token=1234abcd

当应用程序部署在 App Engine 中时,我们可以通过 - https://PROJECT_ID.REGION_ID.r.appspot.com

访问该应用程序

这些消息将被您部署在 App Engine 中的应用程序的任何实例接收。

SSH 到您的实例并使用虚拟机中的 App Engine 端点 URL。

实例 1 的输出:

实例 2 的输出:

【讨论】:

以上是关于从 Google Pub/Sub 调用 Google App Engine 端点的主要内容,如果未能解决你的问题,请参考以下文章

如何从前端移动客户端发布到 Google Pub/Sub?

从浏览器发布 Google Cloud Pub/Sub - 身份验证如何工作?

Google Pub/Sub webhook 调用服务器后无法检索消息内容

Google Cloud 上使用 Pub/Sub 的主/从模式

如何从 Google Pub/Sub 获取 objectId、bucketId 等

使用 Go 从 Google Pub Sub 读取所有可用消息