我想使用典型的推送队列来处理后台运行缓慢的操作。对于某些HTTP请求,应用程序会根据发送的参数创建新任务。
我的应用程序提供来自客户安装的家庭自动化系统的http请求。已安装系统的数量将每月增加4000个。每个系统每6秒与服务器通信一次。但是,只有在事件发生时才会创建任务,并将其嵌入到查询传递的参数中。这种情况每天发生约600次。在发送另一个任务之前处理系统发送的任务非常重要,因此在6秒之前。任务通过使用Objectify在Datastore中读取和存储数据,发送电子邮件以防万一,提醒和/或推送到手机。
我的问题如下:
如何将处理率,bucket-size和max-concurrent-requests值修复为queue.xml
?
我需要确保将提供所有请求并处理所有任务。但我不想为未使用的实例付出太多代价。
提前感谢您的回复。
答案 0 :(得分:0)
对于您提及的用例,查看Pub / Sub + CloudFunctions可能是值得的。
如果您的队列处理器是在AppEngine标准中实现并使用自动缩放,那么它们将自动扩展以处理新的负载。对于一些繁重的吞吐量情况,我会对我的推送队列进行分片(例如,有36个队列AZ,0-9)然后根据对象id进行哈希(如果需要,可以转换为基数36),这样可以减少给定队列的压力。 / p>
答案 1 :(得分:0)
所有答案都在queue.xml
reference中。在这个例子中:
<queue-entries>
<queue>
<name>fooqueue</name>
<rate>1/s</rate>
<retry-parameters>
.....
</retry-parameters>
</queue>
<queue>
.....
</queue>
</queue-entries>
<queue-entries></queue-entries>
是您插入队列的根元素,位于您可以定义的<queue></queue>
内:
<rate>
:
该值是一个数字,后跟斜杠和一个时间单位, 其中单位为秒数,m为分钟,h为小时,d为 天。例如,值5 / m表示任务将在a处理 每分钟5次....
<bucket-size>
可选 ..... [] ...... 如果没有为队列指定bucket_size,则默认值为5。 我们建议您将其设置为较大的值,因为默认值 对于许多用例,大小可能太小:建议的大小 处理率除以5(比率/ 5)。
<max-concurrent-requests>
<强>可选即可。设置可以执行的最大任务数 同时从指定的队列。 该值为整数。通过 默认情况下,每个队列的限制为1000个任务。
在您的特定情况下,假设您完全确定每天只能完成600项任务。这是每144秒大约1个任务。这是你的比率。在文档中它看起来像
<rate>600/d</rate>
看到其他两个值是可选的 -