環境
・Laravel10
・Windows11
ドキュメント
ジョブ・キューとは
時間の掛かる処理を非同期で実行する機能。
リアルタイムでの実行が適さないタスクをジョブとして定義
↓
キューに追加
↓
実行
使用用途
例)
・メール送信
・バッチ処理
・遅延実行
データベースの準備
ジョブキュー実装のため、2つのテーブルをコマンドで生成。
jobs
テーブル生成
php artisan queue:table
〇各カラムについて
・queue
INSERT
されるとき、ジョブが属するキューの名前が入る。通常はdefault
。
・payload
(キューとも呼ばれる)
ジョブの実行内容がJSON形式で入る。
・attempts
エラー試行回数が入る。
・reserved_at
ジョブが予約された日時が入る。
・available_at
ジョブが処理可能になる日時が入る。
failed_jobs
テーブル生成
php artisan queue:failed-table
uuidとは
ソフトウェア上でオブジェクトを一意に識別するための識別子である。分散システム上での利用を考慮して設計されており、統制なしに作成しても重複や偶然の一致が事実上起こらないものとして使用できる
[引用:https://ja.wikipedia.org/wiki/UUID]
環境設定
.env
config/queue.php
ジョブのディスパッチ
dispatch
メソッドを用いることで、ジョブをキューに追加できる。
SendEmailJob::dispatch($user);
バッジやコントローラー内などに記述。
ジョブの実行を遅延させる
例)~分後に実行
SendEmailJob::dispatch($user)->delay(now()->addMinutes(5));
ジョブクラスの生成
キューに登録するジョブはジョブクラスとして作成する。
php artisan make:job SendEmailJob
App\Job
配下にファイルが生成される。
・Illuminate\Contracts\Queue\ShouldQueue
インターフェイス
非同期でジョブをキューに投入し、実行することを宣言。
・handle
メソッド
ジョブがキューで処理されるときに呼び出される。
キューに投入したジョブを実行
キューワーカーとは
キューに貯め込んだジョブを実行する。
以下のコマンドで、キューワーカーを起動し、キューに投入したジョブが実行される。
php artisan queue:work
※実行されたジョブはjobs
テーブル内からなくなる。
参考記事