4

Google App Engine の Java 用の新しいタスク キュー API を検討していますが、それを GWT アプリケーションに関連付けるのに苦労しています。タスク キューを使用して非同期処理を実行したい場合、GWT を使用してどのように処理すればよいでしょうか。

私の見方では、タスク キュー API への送信を行うサーバー リクエストを送信する必要があります。タスク キューを正しく理解していれば、タスク キューから処理を行う (ワーカーになる) サーブレットをさらに作成する必要があります。

私は2つのことを探しています:

  1. ワーカーはサーブレット (つまり extends HttpServlet) になりますか? そうでない場合、誰かが「労働者」の例を教えてもらえますか?
  2. 非同期応答を送信してすぐに実行したいだけの場合、タスク キューを使用する意味はありますか? GWT に組み込まれている RPC メカニズムで十分のようです。
4

2 に答える 2

6

はい、worker は POST パラメータでリクエストを処理できるサーブレットになります。クライアントの観点から非同期呼び出しが必要な場合は、RPC で十分です (サーバーの観点からはまだ同期です)。クライアントと通信しない「遅延」ジョブを実行する場合は、タスク キューを使用できます。

于 2009-11-18T23:29:05.277 に答える
0

Deferred.Deferable

Java での deferred.defer の計画はありますか?

import static com.google.appengine.api.labs.taskqueue.TaskOptions.Builder.taskName;

import java.io.IOException;

import javax.servlet.ServletException;

import com.newatlanta.appengine.taskqueue.Deferred;
import com.newatlanta.appengine.taskqueue.Deferred.Deferrable;

@SuppressWarnings("serial")
public class SampleTask implements Deferrable {

    private String arg1;
    private String arg2;

    public SampleTask() {
    }

    public SampleTask(String arg1, String arg2) {
        // save information to use later
        this.arg1 = arg1;
        this.arg2 = arg2;
    }

    @Override
    public void doTask() throws ServletException, IOException {
        // TODO do work here

        // this is how you 'schedule' a task
        // doing this here is recursive;
        // you most likely want to call this from
        // a server rpc endpoint
        SampleTask task = new SampleTask("arg1", "arg2");
        Deferred.defer(task, "queue-name", taskName("task-name"));
    }
}
于 2010-11-12T18:57:14.793 に答える