Google App Engine将延迟任务添加到队列会产生多个任务

时间:2012-07-27 19:40:59

标签: java google-app-engine

最近我注意到,当我重新安排延期任务时,任务会产生两个或更多完全相同的任务。我刚刚有一份工作产生了4个相同的任务。我们使用以下代码重新安排我们的任务:

Queue q = null; 
if (queueName == null) 
  q = QueueFactory.getDefaultQueue(); 
else 
  q = QueueFactory.getQueue(queueName); 

TaskOptions to = TaskOptions.Builder.withPayload(this); 
q.add(to); 

这段代码非常简单,但它给我们的应用程序带来了很多问题。我们甚至尝试过为这个任务命名,例如:

to.taskName(TASK_NAME); 

防止重复任务产生无效。是否有其他人看过这个问题或有解决方案来防止重复。

1 个答案:

答案 0 :(得分:0)

任务队列可以多次执行相同的任务。这是预期的行为。

您的任务必须是幂等的,才能使用任务队列。即如果它运行多次,它必须表现得好像它运行一次。否则,您无法使用任务队列。