Google Pub/Sub 功能是不是具有在上传后直接通知 Google App Engine 端点的某些功能?

Posted

技术标签:

【中文标题】Google Pub/Sub 功能是不是具有在上传后直接通知 Google App Engine 端点的某些功能?【英文标题】:Does Google Pub/Sub feature have some of capability to notify a Google App Engine endpoint directly after an upload?Google Pub/Sub 功能是否具有在上传后直接通知 Google App Engine 端点的某些功能? 【发布时间】:2018-05-17 17:26:14 【问题描述】:

我正在查看 Google Pub/Sub (https://cloud.google.com/storage/docs/pubsub-notifications) 的文档,但我没有看到 Pub/Sub 在将新文件上传到 Google App Engine 端点时的方法一个桶。

这是正确的,还是我错过了什么?

它在文档中说可能有一种较旧的方法可以完成此操作:https://cloud.google.com/storage/docs/object-change-notification。但我不确定使用可能会被弃用的东西是否是个好主意?

谢谢

【问题讨论】:

或许你可以使用云功能作为中介呢?当发生更改事件时,它会调用您的端点吗? 您好@DriesDeRydt,感谢您的回复,云功能看起来可以工作,但是您对使用对象更改通知有什么意见吗?它似乎可以一步完成 Google PubSub 和 Cloud Function 的工作 【参考方案1】:

GCS 的 Cloud Pub/Sub 支持非常适合这种情况。

首先,创建一个 Cloud Pub/Sub 主题并配置您的 GCS 存储桶以向其发送 OBJECT_FINALIZE 消息。你可以这样做:

$> gsutil notification create -f json \
       -t newTopicName \
       -e OBJECT_FINALIZE \
       gs://bucketName

接下来,将 Cloud Pub/Sub 订阅添加到您的 Cloud Pub/Sub 主题,该主题会将通知推送到您的 App Engine 端点。您可以在 UI 中执行此操作,也可以运行如下命令:

$> gcloud alpha pubsub subscriptions create subscriptionName \
        --topic newTopicName \
        --push-endpoint https://myapp.appspot.com/_ah/push_handlers/myHandler

最后,配置您的应用引擎应用以处理该 URL 处的传入推送事件。您可以在 Cloud Pub/Sub 的文档中阅读有关此方法的更多信息:https://cloud.google.com/pubsub/docs/push#app-engine-standard-endpoints

【讨论】:

嗨@brandon-yarbrough,感谢您的回答。我也对使用 GCS 和 Google Pub/Sub 的两件事感到好奇。当 GCS 事件未能命中 Pub/Sub 主题或 PubSub 主题通知未能推送到接收 AppEngine URL 时,是否存在大规模情况?谢谢 理论上没有。 GCS 保证您最终会收到每个事件的至少一次通知。也就是说,事故发生了。您可能会意外地部署应用程序版本,其中存在无法正确处理消息的错误,或者 Google 可能会搞砸,或者您可能决定要以不同的方式存储内容,或者 Google 的交付可能会延迟。对于像这样的工作流程,定期列出存储桶的内容并验证它们是否与您的应用同步,以防万一,这总是一个好主意。 嗨@brandon-yarbrough,是的,我决定测试 GCS 到 pubsub 主题到 appengine 端点设置,我注意到 pubsub 主题似乎忽略了我设置的确认截止日期(以秒为单位) )。如果它向端点推送通知并像 403 一样,它将立即继续重试。我实际上认为它会等待确认截止日期指定的时间。 当您以 403 响应时,您明确地拒绝了该消息,因此 Pub/Sub 将立即重试。确认截止日期用于处理超时(例如,当您的服务器根本没有响应时)。见cloud.google.com/pubsub/docs/push。

以上是关于Google Pub/Sub 功能是不是具有在上传后直接通知 Google App Engine 端点的某些功能?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Redis 具有 Pub/Sub 功能?

每当在 Google Cloud SQL 中插入或更新数据时,是不是可以向 Google Pub/Sub 发布消息?

无法按日期从 Google Cloud Pub/Sub 功能中的 Firebase 获取文档

Google Cloud Functions 无法使用 Pub/Sub 死信主题

Google Cloud Functions 仅在成功时确认 Pub/Sub(GCP 解决的问题)

将 Angular 中的点击发送到 Google Pub/Sub