キューを使用して高、低、中優先度のメールを設定するにはどうすればいいですか? 質問する

キューを使用して高、低、中優先度のメールを設定するにはどうすればいいですか? 質問する

私は勉強していますここから仕事の派遣

問題

各接続にはキュー名を指定するキュー パラメータがあると読みました。質問は、低、中、高の優先度の電子メールを送信する優先度を設定するにはどうすればよいかということです。

コマンドプロンプト

次のコマンドを使用しています: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

おすすめ記事