Laravel将Job设置为失败



如何将作业标记/设置为失败?

我使用闭包函数来调度一个调用外部API的作业,我想根据API响应手动设置该作业是成功还是失败。

这是我的代码,我使用一个简单的示例而不是API调用。

public function sendSMS( $numbers ) {
dispatch(function () use ( $numbers ) {            
$this->smsProcess($numbers, $this->note->content);
});
}
public function smsProcess( $numbers, $message ) {
$int = random_int( 1, 10 ) * random_int( 1, 10 );
if ( $int < 50  ) {
throw ValidationException::withMessages('Less than 50')->status(403);
} else {
throw ValidationException::withMessages('Greater than 50')->status(403);
}
}

sendSMS函数运行时,我可以看到smsProcess的挂起作业

但当我运行queue:work时,作业是Processed,并且没有失败,

那么,我如何手动触发作业失败呢?

如果我在smsProcess上放了一些错误代码,我可以看到由于php错误,作业被标记为Failed

您应该使用Exception类,而不是ValidationException

public function smsProcess( $numbers, $message ) {
$int = random_int( 1, 10 ) * random_int( 1, 10 );
if ( $int < 50  ) {
throw new Exception('Less than 50');
} else {
throw new Exception('Greater than 50');
}
}

相关内容

  • 没有找到相关文章

最新更新