我应该如何在 Cloud Functions for Firebase 中复制 Firebase 队列数据属性?

How should I replicate Firebase Queue data properties in Cloud Functions for Firebase?

Firebase 队列使用以下属性来跟踪处理:

_state _state_changed _owner _progress _error_details _id

我正在将我的一些 Firebase 队列代码迁移到 Cloud Functions for firebase。我如何获得 _owner 属性 的等效数据 属性?

或者,考虑到这个 属性 主要是为了缓解并发问题,Cloud Functions 是否已经以另一种方式解决了这个问题,使我的实现变得不必要了?

两个系统的语义略有不同。 Firebase Queue 中 _owner 属性 的主要原因是一旦操作的租约到期,它就无法终止用户代码,因此我们必须保护处理函数的任何副作用一张支票。 Cloud Functions 控制着执行环境,并且可以在需要时终止用户代码,因此我们可以假设如果它正在写入,那么它仍然有租约。

为了模拟这种行为,可以在每次 Cloud Function 执行开始时生成一个 v4 UUID,将其写回到数据库的某个地方并带有时间戳,这样您就可以超时租约(由事务保护所以你不会破坏其他所有者),然后每次你在函数中写回数据库时将它们与当前 UUID 和事务中的时间进行比较。

_state_state_changed 属性应该足以解决 Google Cloud Functions for Firebase 中的并发问题(特别是竞争条件)(我仍在调查Google 如何在内部解决此问题)。

但是,_owner 属性 在存在多平台任务工作者的情况下会额外有帮助。