phpとか

自分用備忘録なので、自分が分かる程度にしか書いてません。

Laravel キューが実行されない

dbのjobsテーブルでキュー管理 & supervisorを使用してjobのテストしていたら以下の現象が発生。

1.メール通知をキューに登録して非同期実行
2.わざとメールサーバのホストを存在しないホストにして実行
3.ホストを修正して実行しなおしてもキューが実行されない

dbのjobsテーブルには実行する度にどんどんキューは溜まっている。でも実行されない。

僕の場合は原因が2つありました。

1.supervisorが古いソースのまま動いている
supervisorって再起動しないとソースが反映されないんですね。

2.attemptsがmaxになってた
dbのjobsテーブルのattemptsが255になってました。このテーブルはコマンドで自動生成されるんですが、attemptsカラムはtinyintで作られてました。
キューが実行されて成功しないとattempts列の値がどんどん増えてくんですが、maxまでいくとなにもしなくなるみたいですね。
faild_jobsテーブルに移動してjobsテーブルからは行削除とかしてくれればいいのに。

ってわけでlaravelのコマンドスケジューラで毎分attemptsカラムが255のものあれば削除 & 通知するように設定。