2014-10-19 74 views
0

我想要做的很多工作都涉及我想在托管环境上运行的长时间运行的进程,并为用户提供一个Web界面以查看长时间运行的作业的结果。如何设置使用任务队列和GWT的Google App Engine项目?

我相信谷歌应用程序引擎以其“模块”功能(https://cloud.google.com/appengine/docs/java/modules/)是一个很好的服务,但我一直在努力弄清楚如何将其设置为这个目的(见App Engine Modules with GWTPossible to use Google Modules with Google Plugin for Eclipse?How use Eclipse to develop Google Modules for Google Cloud?)。有人可能一直在尝试做同样的事情(请参阅:how to create gwt gae with app engine modules using google eclipse plugin),但没有可接受的答案,我在寻找更全面的说明。

有人可以提供一组循序渐进的指令来设置下面的涉及以下项目体系结构的Hello World项目吗?

要求

  • 用户访问网页和类型的作业名称,例如“Hello World”和他们的电子邮件地址,他们将收到结果。
  • Google App Engine然后执行长时间运行的计算(例如10小时,即比标准类型为“自动”的模块的10分钟时限长得多,如https://cloud.google.com/appengine/docs/java/modules/所述)。
  • Google App Engine随后会向用户发送一封电子邮件,指出“Hello World”计算已完成,并在电子邮件正文中提供结果。

项目架构

  • Web前端(理想GWT但提出的任何合适的选择,因为在此描述它可能是一个问题:App Engine Modules with GWT
  • 模块1(缩放类型=自动):通过使用用户提供的名称在Google Task Queue上放置作业来响应Web前端请求。该电子邮件地址记录在Google数据存储中,主键与作业名称相同(目的是为了了解如何使两个模块共享同一个数据存储;这里暗指:Serving multiple GAE modules from one development server?,但我希望看到更多详情)。
  • 模块2(缩放类型=基本缩放):从Google Task Queue中挑选作业,执行长时间运行的计算,并通过电子邮件发送结果。请注意,电子邮件地址是通过使用作业名称在数据存储中查找而获得的。

开发环境

+0

Jarrod,感谢您访问http://stackoverflow.com/questions/1759387/google-app-engine-task-queue-on-gwt。我正在努力解决的额外复杂问题是如何整合Google模块,2009年当类似问题被提出时,这些模块并不存在。 – 2014-10-20 18:00:52

回答

0
  1. 你的第一个模块是一个GWT应用程序。它提供了一个用户界面。

  2. 当用户发起请求时,您可以对同一模块中的某个服务进行标准的RPC调用。在此服务中,您使用任务API创建任务。该任务包括指向第二个模块的target parameter

或者,您可以直接对您的第二个模块进行REST调用。

  1. 您的第二个模块是纯Java。它不需要GWT,它不是App Engine意义上的独立应用程序。它执行任务并使用App Engine Mail API将结果通过电子邮件发送给用户。

在Eclipse中不需要任何特殊的东西来创建此设置。您只需在现有项目中创建一个名为EAR的新目录并创建/复制一堆配置文件。 Modules Configuration提供了有关如何操作的详细说明。如果您熟悉后端,通过阅读Converting backends to Modules可能会更容易理解该过程。

您可以创建两个独立的Eclipse项目 - 每个模块一个,但没有必要。您可以简单地为每个模块使用单独的源目录。例如,如果你的名字你的模块“gwtapp”和“后台”,你可以在项目中创建下列程序包:

gwtapp.src.com.myproject... 
backend.src.com.myproject... 

然后打开构建路径(项目属性> Java构建路径),单击源选项卡上,然后添加文件夹。添加两个文件夹:

gwtapp/src 
backend/src 

到您的项目。对于每个项目选择不同的输出文件夹:gwtapp/src将指向MyProject/ear/gwtapp/war/WEB-INF/classes,并且backend/src将指向MyProject/ear/backend/war/WEB-INF/classes。当然,在执行此步骤之前,您必须创建这些文件夹(分别为ear/gwtapp/war/WEB-INFear/backend/war/WEB-INF)。

+0

安德烈,谢谢你的帮助。可以使用Google Plugin for Eclipse来创建GWT应用程序吗?然后我添加EAR目录(等)到它?恐怕不是因为http://stackoverflow.com/questions/23259113/how-to-create-gwt-gae-with-app-engine-modules-using-google-eclipse-plugin。我最好使用Maven创建最初的项目吗? – 2014-10-20 18:08:56

相关问题