Laravelのキュー遅延配布の問題
3518 ワード
Laravelのキュー遅延配布問題、使用中のピット
QUEUE_DRIVER=sync デフォルトでは、delay遅延キューでは同期は使用できません.そうしないと機能しません.
以下は元の文書です.
配布の遅延
キュー内のタスクの実行を遅らせたい場合は、タスクインスタンスの
Amazon SQSキューサービスは最大15分遅延します.
さぎょうチェーン
ワークチェーンでは、順番に実行するキューのリストを指定できます.1つのタスクが失敗した場合、残りのタスクは実行されません.タスクを配布するときに使用できます
カスタムキュー&接続
指定したキューへのタスクの配布
タスクを異なるキューにプッシュすることで、キュータスクを分類したり、異なるキューにどれだけのタスクを割り当てるかを制御したりすることができます.これは、キュープロファイルの異なる「connections」にタスクをプッシュするのではなく、接続の異なるキューにタスクをプッシュすることを覚えておいてください.キューを指定するには、タスクインスタンスの
指定した接続へのタスクの配布
複数のキュー接続を使用している場合は、指定した接続にタスクをプッシュできます.接続を指定するには、タスクを配布するときに使用できます.
もちろんチェーン呼び出しもできます
タスクの最大試行回数/タイムアウト値の指定
最大試行回数
1つのタスクで最大試行回数を指定すると、Artisanコマンドラインから試行できます.
しかし、タスククラスで最大試行回数を定義するなど、より洗練された方法でこの作業を完了することができます.クラスとコマンドラインの両方で最大試行回数が定義されている場合、Laravelはタスククラスの値を優先的に実行します.
タイムアウト
{note}
同様に、タスクが実行できる最大秒数は、Artisanコマンドラインの
使用中のピット:キュー内のタスクの実行を遅らせたい場合は、タスクインスタンスのdelay方を使用します.
QUEUE_DRIVER=sync デフォルトでは、delay遅延キューでは同期は使用できません.そうしないと機能しません.私が使用しているredis
記事の元のアドレス:https://learnku.com/docs/laravel/5.5/queues/1324#delayed-dispatching
QUEUE_DRIVER=sync デフォルトでは、delay遅延キューでは同期は使用できません.そうしないと機能しません.
以下は元の文書です.
配布の遅延
キュー内のタスクの実行を遅らせたい場合は、タスクインスタンスの
delay
方法.たとえば、割り当て後10分以内にタスクを処理できないように指定します.delay(Carbon::now()->addMinutes(10));
}
}
Amazon SQSキューサービスは最大15分遅延します.
さぎょうチェーン
ワークチェーンでは、順番に実行するキューのリストを指定できます.1つのタスクが失敗した場合、残りのタスクは実行されません.タスクを配布するときに使用できます
withChain
メソッドを使用して、ワークチェーンを持つキュータスクを実行します.ProcessPodcast::withChain([
new OptimizePodcast,
new ReleasePodcast
])->dispatch();
カスタムキュー&接続
指定したキューへのタスクの配布
タスクを異なるキューにプッシュすることで、キュータスクを分類したり、異なるキューにどれだけのタスクを割り当てるかを制御したりすることができます.これは、キュープロファイルの異なる「connections」にタスクをプッシュするのではなく、接続の異なるキューにタスクをプッシュすることを覚えておいてください.キューを指定するには、タスクインスタンスの
onQueue
方法:onQueue('processing');
}
}
指定した接続へのタスクの配布
複数のキュー接続を使用している場合は、指定した接続にタスクをプッシュできます.接続を指定するには、タスクを配布するときに使用できます.
onConnection
方法:onConnection('sqs');
}
}
もちろんチェーン呼び出しもできます
onConnection
および onQueue
メソッドを使用して、タスクの接続とキューを同時に指定します.ProcessPodcast::dispatch($podcast)
->onConnection('sqs')
->onQueue('processing');
タスクの最大試行回数/タイムアウト値の指定
最大試行回数
1つのタスクで最大試行回数を指定すると、Artisanコマンドラインから試行できます.
--tries
で設定します.php artisan queue:work --tries=3
しかし、タスククラスで最大試行回数を定義するなど、より洗練された方法でこの作業を完了することができます.クラスとコマンドラインの両方で最大試行回数が定義されている場合、Laravelはタスククラスの値を優先的に実行します.
タイムアウト
{note}
timeout
PHP 7.1+および pcntl
PHP拡張を最適化した.同様に、タスクが実行できる最大秒数は、Artisanコマンドラインの
--timeout
スイッチの指定:php artisan queue:work --timeout=30
使用中のピット:キュー内のタスクの実行を遅らせたい場合は、タスクインスタンスのdelay方を使用します.
QUEUE_DRIVER=sync デフォルトでは、delay遅延キューでは同期は使用できません.そうしないと機能しません.私が使用しているredis
記事の元のアドレス:https://learnku.com/docs/laravel/5.5/queues/1324#delayed-dispatching