2012-01-06 32 views
1

我有一系列重复性工作,每个工作都需要访问许多不同的网站 - 每个工作的范围从100到10000个网站。在java的谷歌应用引擎中使用并行处理

从我在Google文档中为Task Queue API读到的内容。一个任务可以用来发送一个请求到一个内部的相对URL,并带有一些参数(被定义为任务的一部分)。

我想要的是能够控制流量,例如有一个“队列”,其中只有50个站点作为一个作业的一部分同时访问,然后是一个快速队列,其中一个作业多达5000个站点同时访问...

如何在Google App Engine for Java中完成上述操作?

我能想到的唯一解决方案就是像Korus这样的并行处理框架,但是这并没有为我提供任务队列提供的控制级别......是否有一些简单和/或更好的方法完成我想要的?

+1

您可以在每个“任务队列”上设置[处理速率](http://code.google.com/appengine/docs/java/config/queue.html)以完全满足您的需求,而且您只会受限于你的预算。 – 2012-01-06 15:19:21

回答

2

Arvind,

这可以通过配置您的队列轻松完成。以下是有关如何配置进程速率的相关文档:http://code.google.com/appengine/docs/java/config/queue.html#Defining_Push_Queues_and_Processing_Rates

总之,有几个属性可以帮助您控制应用程序如何处理队列中的任务。它们是:速率,桶大小,最大并发请求。他们每个人都会让你限制处理速度。请记住,App Engine使用token buckets算法来控制任务执行的速率。

为了您的第一个例子,你可以控制50个站点是由只设置<max-concurrent-requests>50</max-concurrent-requests>

并发访问的其它参数将只是帮助你设置你想多快的速度来处理任务,直到你到达50个并发请求该队列。

希望这会有所帮助!

相关问题