GWT の Google App Engine タスクキュー
-
20-09-2019 - |
質問
Google App Engine の Java 用の新しいタスク キュー API を調べていますが、それを GWT アプリケーションに関連付けるのに苦労しています。タスクキューを使用して非同期処理を実行したい場合、GWT を使用してどのように実行すればよいでしょうか。
私の考えでは、サーバーリクエストを送信して、タスクキュー API に送信する必要があると考えられます。タスク キューを正しく理解していれば、タスク キューからの処理を実行する (ワーカーとなる) サーブレットをさらに作成する必要があります。
私は 2 つのことを探しています:
- ワーカーはサーブレットでしょうか (つまり、伸びる
HttpServlet
)?そうでない場合は、誰かが「労働者」の例を教えてもらえますか? - 非同期応答を送信してすぐに実行したいだけの場合、タスク キューを使用するのは本当に意味があるのでしょうか?GWT の組み込み RPC メカニズムで十分のようです。
解決
はい、作業者は、POSTパラメータで要求を処理できるサーブレットだろう。 あなたはクライアントの観点からの非同期呼び出しをしたい場合は、RPCは、(サーバの観点から、それはまだ同期している)で十分です。あなたのクライアントに話をしない「遅延」の仕事をしたい場合は、タスクキューを使用することができます。
他のヒント
? の
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"));
}
}
所属していません StackOverflow