2014-10-30 52 views
0

添加和租賃任務我有以下隊列定義InvalidQueueModeException而在應用服務引擎

<queue> 
    <name>ranker-queue</name> 
    <mode>pull</mode> 
</queue> 

在10倍

Queue q = QueueFactory.getQueue("ranker-queue"); 
    TaskOptions taskOptions = TaskOptions.Builder.withMethod(TaskOptions.Method.PULL); 
    q.add(taskOptions); 

一個循環中的10次

Queue q = QueueFactory.getQueue("ranker-queue"); 
    List<TaskHandle> tasks = q.leaseTasks(3600, TimeUnit.SECONDS, 5); 
    //Processing 
    q.deleteTask(tasks); 

環路在循環幾次之後的兩種情況下,都會給出以下例外

com.google.appengine.api.taskqueue.InvalidQueueModeException: Target queue mode does not support this operation : null 
    at com.google.appengine.api.taskqueue.QueueApiHelper.translateError(QueueApiHelper.java:139) 
    at com.google.appengine.api.taskqueue.QueueImpl$2.wrap(QueueImpl.java:552) 
    at com.google.appengine.api.taskqueue.QueueImpl$2.wrap(QueueImpl.java:521) 
    at com.google.appengine.api.utils.FutureWrapper.wrapAndCache(FutureWrapper.java:55) 
    at com.google.appengine.api.utils.FutureWrapper.get(FutureWrapper.java:92) 
    at com.google.appengine.api.utils.FutureWrapper.get(FutureWrapper.java:88) 
    at com.google.appengine.api.taskqueue.QueueApiHelper.getInternal(QueueApiHelper.java:72) 
    at com.google.appengine.api.taskqueue.QueueImpl.add(QueueImpl.java:413) 

Caused by: com.google.appengine.api.taskqueue.InvalidQueueModeException: Target queue mode does not support this operation : 
    at com.google.appengine.api.taskqueue.QueueApiHelper.translateError(QueueApiHelper.java:139) 
    at com.google.appengine.api.taskqueue.QueueApiHelper.translateError(QueueApiHelper.java:153) 
    at com.google.appengine.api.taskqueue.QueueApiHelper$1.convertException(QueueApiHelper.java:52) 
    at com.google.appengine.api.utils.FutureWrapper.get(FutureWrapper.java:96) 
    at com.google.appengine.api.utils.FutureWrapper.get(FutureWrapper.java:88) 
    at com.google.appengine.api.taskqueue.QueueApiHelper.getInternal(QueueApiHelper.java:72) 
    at com.google.appengine.api.taskqueue.QueueImpl.leaseTasks(QueueImpl.java:810) 
+0

爲了讓大家都知道,這個問題自動停止出現。 – SoulMan 2014-11-03 06:07:04

回答

-1

在此代碼:

Queue q = QueueFactory.getQueue("ranker-queue"); 
TaskOptions taskOptions = TaskOptions.Builder.withMethod(TaskOptions.Method.PULL); 
q.add(taskOptions); 

...正在定義的任務選項,但您不添加任務的有效載荷。下面是the docs一個例子:

Queue q = QueueFactory.getQueue("pull-queue"); 
q.add(TaskOptions.Builder.withMethod(TaskOptions.Method.PULL) 
           .payload("hello world")); 
+0

有效負載是可選的。這個錯誤是什麼? – SoulMan 2014-10-30 13:31:14

+0

好吧,第一個異常表明當你試圖添加任務時,有些東西是'null',所以我試圖去思考可能是什麼。它總是一個特定的迭代失敗,並且這些特定的'TaskOptions'有什麼不同嗎? – tx802 2014-10-30 16:41:17

0

你得到這個錯誤,它神奇地消失了......你得到這個錯誤必須最近已更改「排行器隊列」從推送隊列中拉入隊列之前的原因。似乎App Engine需要時間在您上傳新的queue.xml後傳播更改。不幸的是,我不知道這個過程需要多長時間。