如何将作业标记/设置为失败?
我使用闭包函数来调度一个调用外部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');
}
}