我们对在GAE中使用推送队列感兴趣,但有一件事我无法找到在队列或发动机停机时恢复的窗口。
例如,我有一个包含许多任务的推送队列。其中一些任务被取消并正在执行。假设现在队列出现故障(无论出于何种原因),而这些任务正在执行,然后又重新启动。恢复队列的时间窗口是什么时候?是否有固定的恢复时间窗口?
这些任务有可能从队列中拉出并执行,现在重新出现在队列中,并由于恢复时间窗口而再次执行。
我们的代码中已经考虑了幂等因素,但了解GAE队列停机时间是否有时间窗口恢复策略会很好。
答案 0 :(得分:3)
如果我正确理解了您的问题,您会担心队列可能会因某个eta范围内的执行完成知识丢失而失败,并且这些任务必须重新执行。
这不是GAE任务队列系统中的工作方式。我们逐个任务地跟踪执行情况。 (我们必须这样做,因为任务不需要按照严格的eta顺序发送。)队列不会在你所指的意义上“失败”。
单个任务可能在当前系统下成功执行两次。当发生这种情况时(并且非常罕见),连续执行之间应该至少有一分钟。
您无需考虑时间窗恢复策略。