从App Engine / Java上的后端开始前端延迟任务

时间:2012-10-14 08:42:12

标签: google-app-engine

是否可以从App Engine / Java上的Deferred后端启动Deferred前端任务。延迟任务在后端使用特定主机启动,代码如下:

queue.add(withPayload(new MyDeferredTask()).header("Host",
    BackendServiceFactory.getBackendService().getBackendAddress("backend1", 1));

这很有效。如果从此后端启动延迟任务,则该任务也在后端运行。是否有要使用的特定主机,或者在前端显式启动延迟任务的其他方法?

更新

我错过了原始问题中的一些重要信息:我在谈论延迟任务,其中传递了有效负载。从后端启动延迟任务在同一后端启动新的延迟任务。我想知道的是,当它从后端开始时,是否可以在前端显式启动延迟任务。上面的原始问题已经过修改以反映这一点。

2 个答案:

答案 0 :(得分:1)

要回答我的旧问题,特别是对于延迟任务 - 如果您在后端运行任务并想在前端启动任务,则应明确指定前端实例的主机,即myapp.appspot.com。如果您未指定主机,则该任务将在与起始代码相同的实例上运行。

要明确地从前端开始,无论调用者正在运行的实例如何,请执行以下操作:

Queue queue = QueueFactory.getQueue("my-queue");
TaskOptions taskOptions = TaskOptions.Builder.withPayload(new MyDeferredTask());
taskOptions.header("Host", "myappid.appspot.com");
queue.add(taskOptions);

答案 1 :(得分:0)

只需使用URL调用您要运行的前端“servlet”的URL-fetch service,或使用servlet的url将任务添加到一个队列。

前端只处理对应用程序的所有HTTP调用,并将其发送到web.xml文件中配置的servlet