2014-10-19 142 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

相關問題