谷歌的应用程序的发动机的任务应用程序排队
-
20-09-2019 - |
题
我期待在谷歌的应用引擎的新任务的队列API for Java和我有困难时期有关,我的应用程序的应用程序。如果我想用一个任务排队去做一些步处理,我应该怎么做,使用的应用程序.
在我看来,我得发送一个服务器的请求,然后会做的提交任务的队列。如果我的理解的任务的队列正确的,我们必须创造又一个servlet做的处理工作队(能的工作人员).
我在找2件事:
- 将工作人员被一个小(即延伸
HttpServlet
)?如果不是,可能有人给我的一个实例"工人"? - 它不会真正意义使用的任务的队列,如果我只是想提交一步的响应能立即执行的?它似乎应用程序的内在RPC机制是不够的。
解决方案
是的,工作人员将是一个servlet它可以处理的请求后的参数。如果你想要一步呼吁从客户的角度来看然后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