Cit*_*zen 9 laravel laravel-5 laravel-5.1
我在Laravel中有一个排队的工作,由于高负载导致外部API失败,因此不时失败.问题是我的选择似乎是让Laravel Queue继续使用请求锤击API,直到它成功或告诉它在X个请求之后停止.
根据工作失败的原因,我有什么方法可以告诉它在5分钟内再试一次,而不是继续锤击?
我想使用内置的队列处理程序,但似乎没有构建重试功能来处理失败的真实场景.我认为失败工作的许多原因不会立即再次尝试解决.
Roj*_*men 19
你能做的是这样的:
// 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();
}
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,除了例外情况,您不必执行此操作,您也可以检查您的操作的结果并从那里做出决定.
拉拉维尔 8
/**
* The number of seconds to wait before retrying the job.
*
* @var int
*/
public $backoff = 3;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4122 次 |
| 最近记录: |