thinkphp5 使用队列延迟重试总进不去?有知道的大L吗?给解答一下。
public function fire(Job $job,$data) {
try {
// 这里替换为实际调用短信服务商 API 发送短信的逻辑
$result = $this->doHelloJob($data);
if ($result) {
// 发送成功,删除队列任务
$job->delete();
} else {
//发送失败,根据短信服务商返回的错误信息决定是否重试
if ($job->attempts() < 3) {
$delay = 2; // 重试间隔,单位秒
$job->release($delay); // 延迟重试
Log::error("次数:".$job->attempts());
} else {
// 重试次数达到上限,记录失败并删除任务
$job->delete();
}
}
} catch (\Exception $e) {
// 发生异常,记录失败并删除任务
$job->delete();
Log::error("111短信发送异常: 错误: " . $e->getMessage());
}
return true;
}
/**
* 业务处理
*/
public function doHelloJob($data)
{
$redis = Cache::store('redis')->handler();
$redis->select(6);
$redis_name = $data['vin'];
$a = rand(1,2);
//随机返回true/false
if($a=='2'){
$redis->set($redis_name,'ok');
return true;
}else{
return false;
}
}
