Laravel Queつまずいたところメモ


失敗したJob用のテーブルを忘れず作る

Jobが失敗した場合に、failed_jobsテーブルに状況を格納する。
なくても、Jobの実行自体はできるが、Job失敗したときにDB書き込みに失敗のログがたまるので、テーブルを作成しておく。

failed_jobsテーブル作成コマンド
php artisan queue:failed-table
php artisan migrate

ジョブが失敗した際の試行回数 tries

classにグローバル変数 $triesを設定することで試行回数を設定できる。

class Hoge
{

    /**
     * 最大実行回数
     *
     * @var int
     */
    public $tries = 1;
}

$tries の試行回数は、最大実行回数 なので、 $tries = 1; ならエラーで再実行しない。

$tries = 2; ならエラー時に一回だけ、再実行する。

ここで、0を指定するとエラーで無制限に再実行を試みるようで、
Jobを管理する jobs テーブルの attempts のカウンター(属性がtinyint unsigned)が振り切れてエラーが起こりました。

※内部ログなので画面上は反応なし

AzureのApp Service(Windows)へのJobの登録

App Service自体のWeb ジョブを使えばクリックで登録できます。
workerコマンドをwindows用のcmdに流したいので、以下の.cmdファイルを作成し

WebJobでLaravelQueueを動かす
php %HOME%\site\wwwroot\artisan queue:work

Webジョブの追加ボタンから、アップします。
それ以外の項目は、下を選ぶのが良さそう。

種類:継続
スケール:マルチインスタンス

以上です。