1

我在一些代码中看到非常奇怪的行为,这些代码检查队列的 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; }

我错过了什么?本地开发服务器上的队列统计信息是否完全不可靠?

4

1 回答 1

0

如果它在部署时按预期工作,那么这就是要遵循的标准。

很多事情都不像在部署环境中那样工作(并行线程不是并行的,在撰写本文时,后端支持在解决它们方面有些破坏)所以部署部署部署!

另一个例子是通道 API。在本地使用时,它使用轮询,如果您查看日志/浏览器调试,您会看到 100 个。但是部署后一切都很好,并且可以按预期工作。

于 2013-01-04T20:05:40.053 回答