LoginSignup
0
1

More than 3 years have passed since last update.

[Laravel] 残りのキューの数を調べる

Last updated at Posted at 2020-10-15

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
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1