私は勉強していますここから仕事の派遣
問題
各接続にはキュー名を指定するキュー パラメータがあると読みました。質問は、低、中、高の優先度の電子メールを送信する優先度を設定するにはどうすればよいかということです。
コマンドプロンプト
次のコマンドを使用しています:php アーティザン キュー:listenジョブを処理します。
私が試したことは何ですか?
php artisan queue:work --queue=high,default
しかし、接続のキューパラメータの値が高くない場合、このコードは機能しません。
デフォルトのキュードライバー
'default' => env('QUEUE_DRIVER', 'database'),
キュー接続
'connections' => [
'Register' => [
'driver' => 'database',
'table' => 'tbljobs',
'queue' => 'low',
'retry_after' => 5,
],
'ForgotPassword' => [
'driver' => 'database',
'table' => 'tbljobs',
'queue' => 'low',
'retry_after' => 5,
],
],
.env
QUEUE_DRIVER=Register
登録メールのコントローラーコード
$job = (new SendActivationEmail($Data))
->onConnection('Register');
dispatch($job);
パスワードリセット用のコントローラーコード
$job = (new SendResetPasswordEmail($this->tokens->create($user), $user))
->onConnection('ForgotPassword');
dispatch($job);
ベストアンサー1
'connections' => [
'Register' => [ //<this name is connection name
'driver' => 'database',
'table' => 'tbljobs',
'queue' => 'low', //<this name is default queue name then you register a queue using this connection
'retry_after' => 5,
],
],
次のようにコードを変更することをお勧めします。
'connections' => [
'Register' => [
'driver' => 'database',
'table' => 'tbljobs',
'queue' => 'default',
'retry_after' => 5,
],
],
優先度の高いジョブ - 登録メールのコントローラー コード
$job = (new SendActivationEmail($Data))
->onConnection('Register')
->onQueue("high");
dispatch($job);
中優先度ジョブ - パスワードリセットのコントローラーコード
$job = (new SendResetPasswordEmail($this->tokens->create($user), $user))
->onConnection('Register')
->onQueue("medium");
dispatch($job);
優先度の低い仕事
dispatch((new LowPriorityJob())->onQueue("low"));
デフォルトの優先ジョブ
dispatch((new DefaultPriorityJob()));
->onConnection('Register') // この行は、.env でデフォルトの接続が Register であると指定する場合に便利です。QUEUE_DRIVER=Register
ジョブを実行する
このコマンドは、デフォルトの接続に保存されているジョブを実行します。あなたの場合は登録します
php artisan queue:work --queue=high,medium,low,default
このコマンドは、customConnectionName接続に保存されているジョブを実行します。
php artisan queue:work customConnectionName --queue=high,medium,low,default