我正在查看Google App Engine的Java新任务队列API,我很难将其与我的GWT应用程序联系起来。如果我想使用任务队列进行一些异步处理,我该怎么做才能使用GWT。
我看到的方式是,我必须发送一个服务器请求,然后将其提交到任务队列API。如果我正确理解任务队列,我必须创建另一个servlet来从任务队列(作为工作者)进行处理。
我正在寻找两件事:
HttpServlet
)?如果没有,有人可以给我一个“工人”的例子吗?答案 0 :(得分:6)
是的,worker是一个可以使用POST参数处理请求的servlet。 如果你想从客户端的角度进行异步调用,那么RPC就足够了(从服务器的角度看它仍然是同步的)。如果您想要执行不与客户端通信的“延迟”作业,则可以使用任务队列。
答案 1 :(得分:0)
Any plans for deferred.defer in Java?
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"));
}
}