1

最近我注意到,当我重新安排延迟任务时,该任务会产生两个或多个完全相同的任务。我刚刚有一份工作产生了 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); 

以防止重复任务无济于事。有没有其他人看到这个问题或有解决方案来防止重复。

4

1 回答 1

0

任务队列可能多次执行同一个任务。这是预期的行为。

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

于 2014-06-23T04:07:00.660 回答