【发布时间】:2019-09-30 13:31:10
【问题描述】:
我正在开发一个应用程序,我必须向用户发送有关某些工作的通知,并且用户必须在 1 分钟内接受该工作,如果他不接受,则应将工作请求发送给下一个用户。
我使用 firestore 作为数据库。当我创建作业时,触发器将向分配的用户发送通知。现在我必须等待 60 秒以确认用户是否已接受该作业并开始该过程,如果没有,我必须将该作业分配给新用户。
我不确定如何创建这样的程序,其中云功能在延迟后执行。
示例: 第一次执行将由触发器完成,60秒后将命令第二次执行。第二次执行检查作业是否被接受,如果接受则终止并要求不延迟执行,如果作业未被接受,它将重复第一次执行的过程,并在60秒后请求第三次执行。
谷歌云中有哪些可用资源来实现这一目标?
谢谢
【问题讨论】:
-
没有内置提供程序/支持延迟执行云函数调用。您可以通过以下方式完成类似的操作:1)将任务及其超时存储在数据库中,2)using a scheduled trigger 每分钟左右运行一次代码,3)检查自上次以来哪些任务已过期。
-
这就是我现在正在做的事情,但我认为它的可扩展性不是很高,因为工作列表会不断扩大,用户列表也会如此。每分钟处理所有这些任务的单个作业可能会导致延迟。在下一次执行开始之前,最后执行的作业将有更少的时间来接受,或者最坏的情况是,它可能无法在 60 秒内完成执行,并且循环器可能会重叠。
标签: firebase google-cloud-functions google-cloud-pubsub