2012-01-06 7 views
1

私は、ジョブごとにさまざまなウェブサイトを訪問する必要がある一連の反復的なジョブがあります。ジョブごとに100〜10000サイトの範囲です。java用のGoogleアプリケーションエンジンで並列処理を使用する

私はGoogleドキュメントのTask Queue APIについて読んでいます。タスクを使用して、いくつかのパラメータ(タスクの一部として定義されている)を持つ内部相対URLに要求を送信することができます。

私が望むのは、1つのジョブの一部として同時に50のサイトだけが訪れ、次に1つのジョブが5000個のサイトがある場合は1つのより速いキューである「キュー」を持つことです同時に訪問しました...

Google App Engine for Javaでこれをどのように達成できますか?

私が考えることができる唯一の解決策は、コーラスのような並列処理フレームワークですが、それはタスクキューによって提供される制御のレベルを私に提供しません...いくつかの簡単な方法私が欲しいものを達成する?

+1

それぞれの[タスクキュー]に[処理速度](http://code.google.com/appengine/docs/java/config/queue.html)を設定することで、必要な処理を行うことができます。あなたの予算によって制限されます。 –

答えて

2

アルヴィンド、

これは、キューを設定するだけで簡単に達成できます。 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に到達するまでのタスクを処理したいと思いますどのように迅速に設定するのに役立ちますそのキューの要求。

希望すると便利です。

関連する問題