2012-01-06 51 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個併發請求該隊列。

希望這會有所幫助!