ピックアップ

Laravelのqueueのドライバーの基本についての個人的メモ。

Laravelで、

queueを使っていたが、

使い方のみ調べて、

設定して運用していたので、

改めて、

個人用に再確認して、

それを自分のために整理したメモ。

最新情報や、

情報の精査は、

公式サイトなどを正として、

必要に応じて、

そちらをご覧ください。

あくまで、

個人用のメモなので。

前提

Laravelで試していますが、

バージョンについては、

php artisan --version

で確認すると、

概ね、

10か11でした。

Laravel Queueの基本と試した件

Queueの基本部分と、

それを試す件については、

以下の記事の方に、

個人的にメモ。

Laravel Queueのドライバ

デフォルトは、

sync

Laravel Queue は「Job を dispatch する」という共通インターフェースを提供

ドライバごとに Job の保管・実行方法が異なる

  • sync → 即実行(ストレージ不要)
  • database → DB テーブルに Job を保存 → worker が取り出して実行
  • redis → Redis に保存 → worker が非同期で実行
  • sqs → AWS SQS に保存 → worker が非同期で実行

こちら、

Laravel バージョンQueue 関連の変更・sync登場
Laravel 4Queue サポート開始。非同期キュー中心
Laravel 4.xsync ドライバ追加(開発用)
Laravel 5〜8sync ドライバをデフォルトに設定。DB/Redis/SQS 等の多彩なドライバ追加
Laravel 9〜10同様、sync はデフォルトで「簡単に即時実行」を保証。非同期は外部ドライバで制御

ということらしい。

これ、

どこ押さえ解けば良いのか?

💡 ポイント

  • sync は 開発・学習のために生まれた「即時実行型」ドライバ
  • 歴史的には「非同期キューの準備が不要な環境で Queue を扱う」ためのもの
  • 本番運用では大量 Job を扱う場合、sync のままでは呼び出し元がフリーズするのが設計上の制約

ということは、

本番でsyncは想定されていない?

項目sync他ドライバ(database / redis)
非同期処理なしあり
Job の保管なしDB / Redis に格納
並列処理dispatch 呼び出し元のプロセス依存worker プロセスで実行可能
大量 Jobdispatch 側がブロック → UI フリーズworker による分散処理可能
エラー管理その場で throwfailed_jobs テーブルで管理可能

💡 ポイント:

「sync は本番運用を想定していない」と考えて差し支えない
本番では非同期ドライバに切り替えるのが標準的な設計

ピックアップ

おすすめ書籍

コメント一覧

コメントはまだありません。

コメント送信

コメントを残す

広告

おすすめ記事