conocode
このコード
How to

Laravel Queue で ディスパッチするときに動的に driver を指定する

Laravel の キューで、途中でディスパッチ先を変更したいんですけど、できますか?
ディスパッチするときにドライバを指定してあげればできるよ

 

Laravel の Queue は管理サービスとして sync , database , Amazon SQS などいくつかのものが使用できます。

通常は Config でサービスを定義して、.env で Queue に使用するサービスを指定するのですが、デフォルト(.env で指定しているもの)は sync なんだけど、このジョブだけ database にしたい、なんてことがありました。
レアケースだとは思いますが、実際そうしないと動かせない処理がありました。

そういった場合のコーディングは

のようにディスパッチのあと、onConnectionメソッドでドライバを指定してあげればOKです。

ワーカーの起動は
php artisan queue:work database
のように、ドライバー名を指定して起動します