Lumen(Laravel)のQueue処理(DB)フロー
概要
- LumenのQueue(DB)実行のコードを追ったのでメモ
前提
フロー
Illuminate\Queue\Console\WorkCommandクラスが実行
Illuminate\Queue\Worker.php#daemonが実行
- 本関数内で無限ループさせてキュー監視処理を実行している
artisanコマンド実行時にsleepオプションをお渡すの無限ループ内のsleep処理に使用される - 本関数内で、Illuminate\Queue\QueueManager#connection関数を呼び出し
- 本関数内で無限ループさせてキュー監視処理を実行している
Illuminate\Queue\QueueManager#connection
- 本関数内で、DB接続用のコネクションを返す
- 一度コネクションを作成すると、クラス変数として保持するようになっていて、使い回すような仕組みになっている
- コネクション生成の初回時は、本関数内から本クラスのresolve関数が呼び出され、resolve関数内から「Illuminate\Queue\Connectors\DatabaseConnector#connect」が呼ばれる
Illuminate\Queue\Connectors\DatabaseConnector#connect
- config/queue.phpのconnections.databaseの設定を使用し、Illuminate\Queue\DatabaseQueueクラスを生成