Laravelでキューに入れられたジョブがありますが、負荷が高いために外部APIが失敗するために失敗することがあります。問題は、私の選択は、Laravelキューが成功するまでAPIをリクエストでハンマーで叩き続けるか、X回のリクエストの後に停止するように指示することであるように見えることです。
ジョブがどのように失敗したかに基づいて、ハンマーで叩き続けるのではなく、5分後に再試行するように指示する方法はありますか?
組み込みのキューハンドラーを使用したいのですが、実際の障害シナリオを処理するように再試行機能が構築されていないようです。仕事に失敗する理由の多くは、すぐにやり直しても解決できないと思います。
あなたができることはこのようなものです:
// app/Jobs/ExampleJob.php
namespace App\Jobs;
class ExampleJob extends Job
{
use \Illuminate\Queue\InteractsWithQueue;
public function handle()
{
try {
// Do stuff that might fail
} catch(AnException $e) {
// Example where you might want to retry
if ($this->attempts() < 3) {
$delayInSeconds = 5 * 60;
$this->release($delayInSeconds);
}
} catch(AnotherException $e) {
// Example where you don't want to retry
$this->delete();
}
}
}
例外を除いてこれを行う必要はないことに注意してください。アクションの結果を確認して、そこから決定することもできます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加