yasutomogのブログ

Software Engineerの雑記

Lumen(Laravel)のQueue処理(DB)フロー

概要

  • LumenのQueue(DB)実行のコードを追ったのでメモ

前提

  • lumen:5.5.7
  • PHP:7.1
  • php artisan queue:work のコマンド実行時

フロー

  • Illuminate\Queue\Console\WorkCommandクラスが実行

    github.com

  • Illuminate\Queue\Worker.php#daemonが実行

    github.com

    • 本関数内で無限ループさせてキュー監視処理を実行している
      artisanコマンド実行時にsleepオプションをお渡すの無限ループ内のsleep処理に使用される
    • 本関数内で、Illuminate\Queue\QueueManager#connection関数を呼び出し
  • Illuminate\Queue\QueueManager#connection

    github.com

    • 本関数内で、DB接続用のコネクションを返す
    • 一度コネクションを作成すると、クラス変数として保持するようになっていて、使い回すような仕組みになっている
    • コネクション生成の初回時は、本関数内から本クラスのresolve関数が呼び出され、resolve関数内から「Illuminate\Queue\Connectors\DatabaseConnector#connect」が呼ばれる
  • Illuminate\Queue\Connectors\DatabaseConnector#connect

    github.com

    • config/queue.phpのconnections.databaseの設定を使用し、Illuminate\Queue\DatabaseQueueクラスを生成