我应该如何在Firebase的云功能中复制Firebase队列数据属性?

时间:2017-03-28 16:57:02

标签: node.js firebase firebase-realtime-database google-cloud-functions

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

_state _state_changed _owner _progress _error_details _id

我正在将部分Firebase Queue代码迁移到firebase的Cloud Functions。我如何获得_owner属性的等效数据属性?

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

2 个答案:

答案 0 :(得分:2)

两个系统之间的语义略有不同。 Firebase队列中_owner属性的主要原因是,一旦操作的租约到期,它就无法终止用户代码,因此我们必须通过检查来保护处理函数的任何副作用。云函数控制执行环境并且可以在需要时终止用户代码,因此我们可以假设它是否正在编写,那么它仍然具有租约。

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

答案 1 :(得分:0)

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

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