我正在使用谷歌云任务队列来执行一些长时间运行的任务。 完成所有任务后,我想发送一些通知。
我使用下面的代码来获取我的帖子中待处理任务的数量
QueueStatistics stats = taskQueue.fetchStatistics(); stats.getNumTasks();
但是我在这里通过getNumTask()方法不断检查值返回。 如果它为零,那么我通知其他人。 是否有任何可用的回调可以在我的队列的所有任务完成后通知我。
此致
答案 0 :(得分:1)
如果同时运行的任务不是您的应用程序的必需,您可以将max-concurrent-requests设置为1来设置队列,以便逐个运行任务:
<queue-entries>
<queue>
<name>my-queue</name>
<rate>1/s</rate>
<max-concurrent-requests>1</max-concurrent-requests>
</queue>
</queue-entries>
然后,在推送队列中的所有任务之后,将通知任务推送到同一队列。通知任务将是队列中的最后一个,并将在所有任务完成后执行。
注意:当您的某个任务失败时,请小心自动重试。这将使通知任务不是队列中的最后一个。也许你可以在失败时清除队列,然后重试。