在Google App Engine上推送与拉队列

时间:2012-09-07 11:54:07

标签: java api google-app-engine task-queue worker-thread

到目前为止,没有人(甚至GAE文档)都没有能够清楚地说明推送队列和拉队列。

我的理解是任务队列API允许您定义可以将工作排入的任务队列。不知何故,这与GAE的自动缩放功能一起使用,因此您无需显式管理消耗这些队列任务的工作线程数量:GAE就是为您完成的。

但是我无处可寻找推送和拉取队列之间差异的“King's English”描述。什么是“推队”推?什么是“拉队列”拉?它们都是在queues.xml内配置的吗?

1 个答案:

答案 0 :(得分:25)

拉队列中,您将任务排入队列,并且您的代码需要提取它们,您可以通过从队列租用任务并删除任务来提取它们。如果您不删除任务并且租约时间已过期,则系统会将任务返回到队列。

您可以使用拉取队列(例如)来聚合可以一起处理的多个工作单元。另一个例子:排队任务将由外部机器(如EC2或gCompute)拉动,以便以AppEngine无法处理的方式处理任务。

推送队列中,您将任务排入队列,但AppEngine将使它们出列,并在任务指定的处理程序上运行它们。您可以控制任务处理速率,如何控制任务执行失败,AppEngine将决定使用多少实例(线程)进行处理。