Laravelでdatabaseキューを使っている場合、失敗したジョブはfailed_jobs
テーブルに入ります。
リラン(再実行)したい場合は、再度jobs
テーブルに入れてあげればキューワーカーが再実行してくれます。
INSERT INTO jobs (
queue
,payload
,attempts
,reserved_at
,available_at
,created_at
) SELECT
queue
,payload
,0
,null
,UNIX_TIMESTAMP(now())
,UNIX_TIMESTAMP(now())
FROM failed_jobs
WHERE id = X
;
上記のようなSQLでfailed_jobs
に入ったレコードをjobs
に戻せます。
SQLを使わなくてもartisanコマンドを使えば同じことができます(@mindwoodさんありがとうございます)。
php artisan queue:retry {ID}
失敗ジョブをID指定で再実行
他にも
php artisan queue:failed
失敗ジョブの確認
php artisan queue:retry all
失敗ジョブをすべて再実行
php artisan queue:forget {ID}
失敗ジョブをID指定で削除
php artisan queue:flush
失敗ジョブをすべて削除
があります。