現在実行中のタスクがあるかどうかを確認するためにキューの QueueStatistics をチェックする一部のコードで、非常に奇妙な動作が見られます。私の知る限り、実行中のタスクはなく、過去 12 時間以上キューに入れられたタスクはありません。開発コンソールはこれを裏付けており、キューに 0 個のタスクがあることを示しています。
ただし、デバッガーで QueueStatistics 情報を見ると、キュー内に 500 以上 (!!!) のタスクが表示されているため、プロセスが終了していることを確認できます。また、過去 1 分間に 1000 を超えるタスクを実行したにもかかわらず、過去 1 時間に実行したタスクは 0 であるとも表示されます。ETA Usec を解析すると、QueueStatistics がプルされた時点から 1 分以内に ETA があるかのように、時間が「正確に」表示されます。
これは、サーブレットを再実行するたびに繰り返し発生します。サーブレットが最初に行うことは、キューの統計をチェックすることです。これは私のローカル開発サーバーであるため、他のサーブレット、タスク、または cron ジョブは実行されていません。それでも、キューの統計は、何百ものタスクが実行されていることを主張し続けています。
この動作に関する他のレポートは見つかりませんでしたが、Queue Statistics に関して、ここで大きな何かが欠けているように感じます。私が使用しているコードは非常に単純です。
Queue taskQueue = QueueFactory.getQueue("myQueue");
QueueStatistics stats = taskQueue.fetchStatistics();
if (stats.getNumTasks() > 0) { return; }
私は何が欠けていますか?キュー統計は、ローカル開発サーバーではまったく信頼できませんか?