首页 文章

GWT上的Google App Engine任务队列

提问于
浏览
4

我正在查看Google App Engine的Java新任务队列API,我很难将其与我的GWT应用程序联系起来 . 如果我想使用任务队列进行一些异步处理,我该怎么做才能使用GWT .

我看到它的方式是,我必须发送一个服务器请求,然后将提交到任务队列API . 如果我正确理解任务队列,我必须创建另一个servlet来从任务队列(作为工作者)进行处理 .

我正在寻找两件事:

  • Worker 是否是Servlet(即扩展 HttpServlet )?如果没有,有人可以给我一个"worker"的例子吗?

  • 如果我只是想提交一个要立即执行的异步响应,那么使用任务队列真的有意义吗?似乎GWT的内置RPC机制就足够了 .

2 回答

  • 6

    是的,worker将是一个servlet,可以使用POST参数处理请求 . 如果你想从客户端的角度进行异步调用,那么RPC就足够了(从服务器的角度看它仍然是同步的) . 如果要执行不与客户端通信的“延迟”作业,可以使用任务队列 .

  • 0

    Deferred.Deferable

    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"));
        }
    }
    

相关问题