Laravel イベント非同期にチャレンジしてみる。
Laravel をインストールしてイベントを試す手順。 プロジェクト名(event)を決めて以下のコマンドを実行します。 インストール時にプロジェクト名のディレクトリが作成されます。 インストールの最後に sudo でパスワードの入力を求められます。 ↓下のメッセージが表示されてインストールは終わります。 sail のエイリアスを定義します。 Laravel のインストールはここまで。 「sail up」でコンテナを起動します。 app/Providers/EventServiceProvider.php にイベントを定義します。 ↓下の OrderShippedクラス、SendShipmentNotificationクラス というのは未だ存在しないファイルです。これからコマンドでクラスファイルを生成する為に、EventServiceProvider.php ファイルに定義する感じです。 artisanコマンド で↑上の EventServiceProvider.phpファイル からイベントクラスとリスナークラスファイルを生成します。 app/Events/OrderShipped.php、app/Listeners/SendShipmentNotification1.php、app/Listeners/SendShipmentNotification2.php のファイルが生成されます。 app/Events/OrderShipped.php app/Listeners/SendShipmentNotification1.php app/Listeners/SendShipmentNotification2.php イベントを発火する welcomページ 呼び出し時にイベントを発火するように routes/web.php を修正します。 ブラウザで画面を表示してログを確認します。↓下のようにイベントは同期で呼び出されました。 イベントを非同に期対応させます .env ファイルを QUEUE_CONNECTION を sync から database に変更します。 キューテーブルを作成します。 app/Listeners/SendShipmentNotification2.php に「ShouldQueue」を implements で非同期対応します。 storage/logs/laravel.log を確認すると非同期にした SendShipmentNotification2.php が呼び出されません。 以下のコマンドを実行するとキューにたまったイベントが処理されます。
Laravel イベント非同期にチャレンジしてみる。 Read More »