我在一些代码中看到非常奇怪的行为,这些代码检查队列的 QueueStatistics 以查看当前是否有任何任务正在运行。据我所知,没有任何任务正在运行,并且在过去 12 多个小时内没有任何任务在排队。开发控制台证实了这一点,称队列中有 0 个任务。
不过,在我的调试器中查看 QueueStatistics 信息,确认我的进程正在退出,因为它在队列中看到了大约 500 多个(!!!)任务。它还说它在过去一分钟内运行了超过 1000 个任务,但在过去一小时内运行了 0 个任务。如果我通过 ETA Usec 进行解析,则时间是“准确地”显示的,好像 ETA 在提取 QueueStatistics 的下一分钟内。
每当我重新运行我的 servlet 时,这种情况就会反复发生,而 servlet 所做的第一件事就是检查队列统计信息。没有其他 servlet、任务或 cron 作业正在运行,因为这是我的本地开发服务器。然而,队列统计数据继续坚持我有数百个任务正在运行。
我找不到任何其他关于此行为的报告,但感觉我必须在这里遗漏一些关于队列统计的重要内容。我使用的代码非常简单:
Queue taskQueue = QueueFactory.getQueue("myQueue");
QueueStatistics stats = taskQueue.fetchStatistics();
if (stats.getNumTasks() > 0) { return; }
我错过了什么?本地开发服务器上的队列统计信息是否完全不可靠?