GCP:关于如何在漫长的 运行 过程完成后发布 pub/sub 消息的想法

GCP: ideas on how to publish pub/sub message after a long-running process completes

我正在寻找一个推荐的模式来解决我们在 运行ning Firestore 备份过程中遇到的挑战。 Firestore 备份是一个 Cloud Function,每晚触发 运行。这个过程目前大约需要 4 分钟。我们希望在此过程完成时向 Pub/sub 主题发布一条消息,以便可以触发使用备份作为数据源的附加云功能。我们遇到的唯一问题是 Cloud Functions 的最大超时,目前为 540 秒(9 分钟)。虽然我们目前完全在这个限制范围内,但情况可能并非总是如此。

那么,是否有推荐的 GCP 设计模式可以处理完成时间未知的长 运行 宁过程,并在完成后能够向 pub/sub 主题发布消息?我在想向主题发布一条消息并建立一些延迟(比如 1 小时)会很好,这将阻止消息被发布,直到延迟结束。我一直在研究 pub/sub 这个能力,但到目前为止我没有看到太多。即便如此:是否有更好更明显的方法来完成这项工作?

欢迎任何反馈。 谢谢

有几种回答方式。

首先,当您触发导出时,它是异步执行的。如果你想重新使用现有的项目,你可以使用this one(我贡献了它)。

那么,现在您的导出是 运行。这需要时间,并且您希望在完成时收到提醒,而无需在 Cloud Functions 中等待(或 Cloud 运行 导出已完成并花时间等待(因此无需支付任何费用!))。 2 个解决方案

  1. 创建导出后,您就有了一个操作名称。
  • 创建一个 Cloud Task 未来几秒 (10) 触发 Cloud Functions。
  • 云函数对操作执行 GET
    • 如果状态为成功,将消息发布到 PubSub
    • 否则,在未来几秒 (10) 后创建一个新任务。
  1. (我的首选)创建导出时,您会在 Google 云存储 gs://myBucket/myExport 中创建一个文件。因此,使用 google 云存储通知功能
  • 在 PubSub 上接收云存储通知。
  • 创建一个仅过滤前缀为 gs://myBucket/myExport/myExport 的文件的订阅。你可以看看my article for more detail
  • 当 pubsub 消息到达订阅时触发您想要的端点。