GCP:关于如何在长时间运行的进程完成后发布发布/订阅消息的想法



我正在寻找一种推荐的模式,以应对我们在长时间运行的 Firestore 备份过程中遇到的挑战。Firestore 备份是触发为夜间运行的云函数。此过程目前大约需要 4 分钟。我们希望在此过程完成后将消息发布到 Pub/sub 主题,以便可以触发使用备份作为数据源的其他云函数。我们唯一的问题是云函数的最大超时,目前为 540 秒(9 分钟(。虽然我们目前完全在这个限制之内,但情况可能并非总是如此。

那么,是否有推荐的 GCP 设计模式来处理完成时间未知的长时间运行的进程,并在完成后能够将消息发布到发布/订阅主题?我在想最好向该主题发布一条消息并构建一些延迟(例如 1 小时(,这将阻止消息发布,直到延迟结束。我一直在研究 pub/sub 的这种能力,但到目前为止我还没有看到太多。即便如此:有没有更好、更明显的方法来做到这一点?

任何反馈不胜感激。 谢谢

有几种方法可以回答。

首先,触发导出时,将以异步方式执行导出。如果你想重用现有的项目,你可以使用这个(我为它做出了贡献(。

因此,现在您的导出正在运行。这需要时间,您希望在完成时收到警报,而无需在云函数中等待(或云运行导出已完成并花时间等待(因此无需支付任何费用!2 解决方案

  1. 创建导出后,您将具有操作名称。
  • 在将来几秒钟 (10( 秒 (10( 创建触发云函数的云任务。
  • 云函数对操作执行 GET
    • 如果状态为成功,请将消息发布到 PubSub 中
    • 否则,在将来几秒钟内创建一个新任务 (10(。
  1. (我的首选(创建导出时,您会在 Google Cloud Storagegs://myBucket/myExport中创建文件。因此,请使用谷歌云存储通知功能
  • 在 PubSub 上接收云存储通知。
  • 创建一个仅筛选前缀为gs://myBucket/myExport/myExport的文件的订阅。您可以查看我的文章以获取更多详细信息
  • 在 pubsub 消息到达订阅时触发所需的终结点。

相关内容

  • 没有找到相关文章

最新更新