Laravelでその時のキューの数を調べるには次のようにする。
Queue::connection('キュー名')->size();
数の内訳について、バックエンドにRedisを使っている場合はこちらにある通り、通常のキューに加え:delayedと:reservedが付くキューも含まれる(下記参照)。
/**
* Get the size of the queue.
*
* @param string|null $queue
* @return int
*/
public function size($queue = null)
{
$queue = $this->getQueue($queue);
return $this->getConnection()->eval(
LuaScripts::size(), 3, $queue, $queue.':delayed', $queue.':reserved'
);
}
framework/RedisQueue.php at 8.x · laravel/framework
:delayedと:reservedとは、mpywさんのQiitaにあるようにそれぞれ遅延ジョブとリトライジョブ用のキューである。
queues:キュー名:delayed は発火時刻をスコア,値をジョブペイロードとする ZSET(ソート済みセット型)であり,以下のような処理が行われている。
queues:キュー名:reserved に関しても同様で,こちらは遅延ジョブではなくリトライジョブが対象になる。発火時刻を算出するパラメータとして queue.connections.redis.retry_after で設定した秒数が用いられる。
【Laravel】 Redis Queue Worker のソースコードリーディング - Qiita
ちなみにqueues:キュー名
はリスト型となっているが、queues:キュー名:delayed
はソート済みセット型となっている。中身を見たり数をカウントするRedisのコマンドは次の通り。
- 数のカウント
llen queues:キュー名
zcard queues:キュー名:delayed
- 中身を見る
lrange queues:キュー名 0 -1
zrange queues:キュー名:delayed 0 -1