2012-10-14 102 views
2

是否可以從App Engine/Java上的延遲後端啓動延遲前端任務。延遲任務在後端使用具有以下代碼的特定主機啓動:在App Engine/Java上從後端啓動前端延期任務

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

而且這種方式很好。如果從這個後端開始延遲任務,那麼任務也在後端運行。是否有特定的主機被使用,或者在前端顯式啓動延遲任務的其他方式?

更新

我錯過了一個位在原來的問題重要信息:我說的是延遲任務,其中有效載荷在傳遞開始從後端進行的遞延任務將啓動新的延期任務在同一個後端。我想知道的是,如果它可能在前端啓動延遲任務,並從後端啓動。上面的原始問題已被修改以反映這一點。

回答

1

回答我的老問題,配置該servlet,專門爲遞延任務 - 如果你有正在運行的任務在後端並且想要在前端啓動任務,您應該明確指定前端實例的主機,即myapp.appspot.com。如果您不指定主機,那麼該任務將與起始代碼在相同的實例上運行。

要在前端explcitly開始,不管呼叫者上運行的實例,這樣做:

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

只需撥打URL-fetch service的前端「要運行的servlet」的URL或將任務添加到一個帶有servlet的URL的隊列中即可。

前端只是處理所有的HTTP調用您的應用程序並將其發送給在web.xml文件

+0

感謝。但是,我錯過了一小部分關鍵信息 - 我的問題是從後端啓動Deferred任務,而不是URL引用的標準任務。我已經更新了原來的問題。 – snae

相關問題