首页 > 解决方案 > Firebase Function 多类型批处理

问题描述

当前是否有任何内置方法或解决方法可用于对不同类型的数据库/服务工作进行批处理?

例如,我需要做多件事,要么让它们全部完成,要么如果其中一个失败,则回滚所有工作。多类型我的意思是:

  1. 增量计数器firestore
  2. 创建Google Cloud Tasks Queue项目
  3. 将新记录写入firestore集合

如果其中任何一个失败,我需要将它们全部回滚。我之前使用过 Firestore 批量写入,但这不支持我在执行 Google Cloud Tasks Queue 工作时所需的内容。

标签: firebasegoogle-cloud-functions

解决方案


您可以在 Firestore 中使用事务以原子方式将多个操作组合在一起,但无法保证跨多个不同系统的原子性。您需要做的是:

  1. 在事务中,递增计数器,写入新记录,并在某处捕获 Cloud Task 项目正在等待调度以及当前时间。
  2. 安排 Cloud Task 项目。
  3. 将待处理的项目标记为完成。

然后,您将拥有一个计划函数,该函数会定期查找本应已计划但未计划的旧任务。对于其中的每一个,清理 Firestore 数据或在您认为合适的时候重试。


推荐阅读