2

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

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

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

更新

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

4

2 回答 2

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);
于 2014-04-17T12:57:39.687 回答
0

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

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

于 2012-10-14T10:02:03.223 回答