【问题标题】:How to set targeted Modules for specific URL in AppEngine + Java如何在 AppEngine + Java 中为特定 URL 设置目标模块
【发布时间】:2014-11-19 05:18:07
【问题描述】:

在后端基础应用程序引擎项目(Java)中我正在做

Queue queue = QueueFactory.getQueue("userou-queue");
TaskOptions objTskOptions = TaskOptions.Builder.withUrl("/backendsURL/")
.countdownMillis(2000)
.header("Host", BackendServiceFactory.getBackendService().getBackendAddress("backendname"))
.method(Method.GET);
queue.add(objTskOptions);

但是现在对于模块我如何才能针对我的特定 URL 定位特定模块。

请帮帮我。

【问题讨论】:

标签: google-app-engine jakarta-ee gae-module


【解决方案1】:

来自 App Engine 文档:

以下代码示例演示了如何创建推送任务 使用目标寻址到名为 backend1 的模块的实例 1 指令:

import com.google.appengine.api.taskqueue.Queue;
import com.google.appengine.api.taskqueue.QueueFactory; 
import static com.google.appengine.api.taskqueue.TaskOptions.Builder.*;
import com.google.appengine.api.backends.*;

// ...
queue.add(withUrl("/path/to/my/worker").param("key", key).header("Host",
BackendServiceFactory.getBackendService().getBackendAddress("backend1", 1));

【讨论】:

  • 但是,后端已被弃用。并且 BackendServiceFactory 也被弃用了。
  • Modules API 提供了类似的功能。
  • 这是目前推荐的从任务中定位模块的方法 - 此 App Engine 文档页面于 2014 年 10 月 27 日更新 - 就在三周前。
  • 我认为这不是正确的答案。我得到“IllegalStateException:试图获取未知后端的本地地址”。现在测试,但我认为 ModulesService 需要使用。至少我希望,因为我不知道如何使用开发服务器中的模块和任务队列来做到这一点。 cloud.google.com/appengine/docs/java/modules/routing
  • 如果你找不到你的后端,并不代表答案是错误的:) 无论如何,尝试使用 Peter 建议的队列配置。
【解决方案2】:

在队列定义文件中定义target参数:https://cloud.google.com/appengine/docs/java/config/queue#target

【讨论】:

  • 为此我必须为每个模块创建不同的队列。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-09-02
  • 1970-01-01
  • 1970-01-01
  • 2017-04-23
  • 2012-04-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多