概要
laravelのキューを使ってバッチコマンド処理を記載したジョブを動かそうとした。
.envのQUEUE_CONNECTION
はsyncからdatabaseに変更したのに同期実行されてしまって若干詰まったので知見をまとめておく。
原因は笑っちゃうくらいしょうもないことだった。
筆者の場合の原因と解消方法
.envのQUEUE_CONNECTION
はsyncからdatabaseに変更した後にconfigのキャッシュクリアを忘れていた。
$ php artisan config:cache
を実行し$ php artisan queue:work
を実行してジョブをディスパッチする処理を画面上のボタン起因で実行してみたら正常に動作した。
原因特定までの流れ
- .envの
QUEUE_CONNECTION
はsyncからdatabaseに変更 - 「configのキャッシュをクリアしないとなあ」と思いつつ、configキャッシュクリアを失念
- 画面上のボタンでジョブをディスパッチ、うまく動作
- 本当に非同期で動作しているか不安になり、ジョブの一部の処理に
sleep(20);
を仕込む - 画面上のボタンでジョブをディスパッチ、画面のリダイレクト処理が20秒待たされて実行(ということは非同期処理になっていない)
- 解消方法を試し、問題は解消